返回列表 发帖

[系统综合] 关于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/viewthread.php?tid=51998

TOP

回复 1# anythingok


    善用搜索
http://www.autoit3.cn/viewthread ... C3%BB%A7&page=1

TOP

感谢各位的帮助,由于刚学习,很多代码看不懂,能否帮我修改一下,最简单的语句实现就行。

TOP

#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位置。
请大神帮看一下。谢谢!

TOP

  1. ;Au3版本:        3.3.14.2
  2. #include <WinAPIProc.au3>
  3. $aPidList = ProcessList('notepad.exe')
  4. If Not @error Then
  5.         For $i = 1 To $aPidList[0][0]
  6.                 $sPid = $aPidList[$i][1]
  7.                 $sUser = _GetPidUser($sPid)
  8.                 If Not @error Then MsgBox(0,'Pid: ' &$sPid ,'User: ' & $sUser)
  9.         Next
  10. EndIf


  11. ;//获取指定PID的用户名
  12. Func _GetPidUser($sPid)
  13.         If Not ProcessExists($sPid) Then Return SetError(-1)
  14.         $aRet = _WinAPI_GetProcessUser($sPid)
  15.         If IsArray($aRet) Then
  16.                 Return $aRet[0]
  17.         Else
  18.                 Return SetError(-2)
  19.         EndIf
  20. EndFunc   ;==>_GetPidUser
复制代码
试试这个API的

TOP

TOP

返回列表