Sign in to follow this  
Followers 0
JakeLD

Kill process of current user only

8 posts in this topic

Hi, I am trying to kill a process for the current logged user only. However I noticed that the ProcessClose command is trying to shut down all instances. I have tried the ProcessClose command with the exe name and the PID number and I get the same results. Here is my code so far. Thank you for your help.

Dim $PID1, $PID2

; Hide AutoIt tray icon
AutoItSetOption("TrayIconHide", 1)

; Launch Act along with Outlook Service
ShellExecute("D:\Program Files\ACT\Act for Windows\ActSage.exe", "-nosplash")
ShellExecute("D:\Program Files\ACT\Act for Windows\Act.Outlook.Service.exe", @SW_HIDE)

; Kill Act.Outlook.Service.exe when ActSage.exe is closed
$PID1 = ProcessExists("ActSage.exe") ; Will return the PID or 0 if the process isn't found.
$PID2 = ProcessExists("Act.Outlook.Service.exe") ; Will return the PID or 0 if the process isn't found.

If $PID2  Then ProcessWaitClose($PID1)
    ProcessClose($PID2)

Exit

Regards,

Jonathan

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

Hi,

"current logged user" implies that there are more users logged on the same computer.

depending on how the process interacts between users (ie: multiple instances of the same exe)

If you kill the process - you kill it for all users.

Edit:

I suppose there's a way around it - i'm not sure how though.

My guess - get the User ID and then kill the process under it.

Edited by ripdad

Make yourself sheep and the wolves will eat you - Benjamin Franklin

Share this post


Link to post
Share on other sites

Hi,

"current logged user" implies that there are more users logged on the same computer.

depending on how the process interact between users (ie: multiple instances of the same exe)

If you kill the process - you kill it for all users.

A process is started by a user or the system. If a the same process is running for two users then really there will be 2 process running, 2 instances of the same program. If you kill one it will not effect the other.

I'm not sure how to do it in AutoIt but I know the with cmd tool taskkill you can specify the user name and PID. You will have to get the current logged in user, this may be the session, tasklist /v may give you this. You have to do some reading up on this.

You can use taskill with the Run() function. Do a tasklist first to see what is running.


Post your code because code says more then your words can. SciTe Debug mode - it's magic: #AutoIt3Wrapper_run_debug_mode=Y. Use Opt("MustDeclareVars", 1)[topic="84960"]Brett F's Learning To Script with AutoIt V3[/topic][topic="21048"]Valuater's AutoIt 1-2-3, Class... is now in Session[/topic]Contribution: [topic="87994"]Get SVN Rev Number[/topic], [topic="93527"]Control Handle under mouse[/topic], [topic="91966"]A Presentation using AutoIt[/topic], [topic="112756"]Log ConsoleWrite output in Scite[/topic]

Share this post


Link to post
Share on other sites

@UserName

_Security__LookupAccountName

With WMI: Win32_Process and use GetOwner.

You can find some useful code here: http://www.autoitscript.com/forum/index.php?showtopic=19284

Share this post


Link to post
Share on other sites

Something like this should work

 

local $strComputer = @ComputerName
; What process to kill
local $strProcessName = "notepad.exe"
local $objWMI = ObjGet("winmgmts:\\" & $strComputer & "\root\cimv2")
local $colProcesses = $objWMI.ExecQuery("Select * from Win32_Process Where Name = '"& $strProcessName & "'")
local $intCount = $colResults.Count


for $objProcess in $colProcesses
    if $objProcess.GetOwner(@UserName, @LogonDomain) = 0 then
        $objProcess.Terminate()
    endif
next
; Exit script
exit

 

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

While 1
If Not ProcessExists("ActSage.exe") Then 
run('cmd /c taskkill /F /FI "USERNAME eq ' & @USERNAME & '"' & ' /IM "Act.Outlook.Service.exe"')
exitloop
EndIf
sleep (50)
Wend

 

Edited by boththose
figured the loop should end

,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

Share this post


Link to post
Share on other sites

ohh they got me again.  Fool me once shame on you, fool me for like the 8th time thats definitely me.


,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0