关于ProcessExists检测的求助
$g_szVersion = "notepad.exe"If ProcessExists($g_szVersion) Then
MsgBox(0, "", "存在notepad.exe进程")
Else
MsgBox(0, "", "不存在notepad.exe进程")
EndIf
我想检测当前用户环境中是否有notepad.exe进程,结果如果有其他windows用户运行了notepad.exe,那么会检测到。
请问如何检测当前用户的进程?
谢谢! 当时的需求只需要一个结果,如果需要返回多个结果,自己改善
http://www.autoit3.cn/forum.php?mod=viewthread&tid=51998 回复 1# anythingok
善用搜索
http://www.autoit3.cn/forum.php?mod=viewthread&tid=18464&extra=&highlight=%BD%F8%B3%CC%2B%D3%C3%BB%A7&page=1 感谢各位的帮助,由于刚学习,很多代码看不懂,能否帮我修改一下,最简单的语句实现就行。 #include <LocalSecurityAuthority.au3>
$sProcess = "notepad.exe"
$iProcessId = ProcessExists($sProcess)
$hProcess = _OpenProcess($iProcessId, $READ_CONTROL)
$sUser = _QueryKernelObjectSecurityOwner($hProcess)
If ($sUser = @UserName) Then
MsgBox(0, "", "存在notepad.exe进程")
Else
MsgBox(0, "", "不存在notepad.exe进程")
EndIf
我照着改了一下,好象还差那么一点,在@username位置。
请大神帮看一下。谢谢! ;Au3版本: 3.3.14.2
#include <WinAPIProc.au3>
$aPidList = ProcessList('notepad.exe')
If Not @error Then
For $i = 1 To $aPidList
$sPid = $aPidList[$i]
$sUser = _GetPidUser($sPid)
If Not @error Then MsgBox(0,'Pid: ' &$sPid ,'User: ' & $sUser)
Next
EndIf
;//获取指定PID的用户名
Func _GetPidUser($sPid)
If Not ProcessExists($sPid) Then Return SetError(-1)
$aRet = _WinAPI_GetProcessUser($sPid)
If IsArray($aRet) Then
Return $aRet
Else
Return SetError(-2)
EndIf
EndFunc ;==>_GetPidUser试试这个API的 网络不好,帮你找了几个资料
https://www.autoitscript.com/forum/topic/5145-processlist-how-to-show-owneruser/
https://www.autoitscript.com/forum/topic/166126-kill-all-process-in-current-user-and-others-accounts/
https://www.autoitscript.com/forum/topic/126413-processexists-for-only-the-current-user/
https://www.autoitscript.com/forum/topic/111656-kill-process-of-current-user-only/
希望可以对你有用 感谢各位的无私帮助,目前还是没做成。 我想实现检测当前用户是否打开了notepad.exe,如果没打开,就打开notepad.exe,
怎耐这个脚本始终能检测到其它用户运行的notepad.exe,就失效了。
If not ProcessExists("notepad.exe") Then
ShellExecute("C:\\Windows\notepad.exe", "", "" , "",@SW_SHOW)
Else
MsgBox(0, "例子", "记事本已经在运行.")
EndIf
能否帮我简单改一下,万分感谢! 求指点,求帮助 zghwelcome 不是已经上代码了吗?
#include <WinAPIProc.au3>
If _ProcessUser('notepad.exe') Then
MsgBox(0, '', '已在运行')
Else
ShellExecute('C:\Windows\notepad.exe')
EndIf
Func _ProcessUser($ProcessName, $sUser = @UserName)
Local $aProcess = ProcessList($ProcessName)
If @error Then Return SetError(1, 0, 0)
Local $ii, $aUser
For $ii = 1 To $aProcess
$aUser = _WinAPI_GetProcessUser($aProcess[$ii])
If Not @error And $aUser = $sUser Then Return 1
Next
Return 0
EndFunc ;==>_ProcessUser
页:
[1]