[已解决]如何判断不同路径的同样进程是否运行?再根据需求结束?
本帖最后由 ywc195 于 2015-3-20 17:26 编辑如何判断不同路劲的同样进程是否存在?
例如:
我要分别检查C:\QQ.exe 和D:\QQ.exe是否在运行
还有分别结束这些进程
例如:
C:\QQ.exe 和D:\QQ.exe都在运行,如何只结束C:\QQ.exe
感谢版主们的热情和热心。已经解决问题了 这个无解吗? 不是无解,是太简单了别人没兴趣……
先把标题错别字改了,本来是要锁帖的。 ...改了,帮助文件里面貌似没有可以指定路径来判断的案例 _WinAPI_GetProcessFileName() 搞不来{:face (319):},想求个案例 #include <WinAPIEx.au3>
Local $sExeName = 'QQ.exe'
Local $sKillPath = 'C:\'
Local $aList = ProcessList()
Local $sAll = '', $KillPid, $i, $len = StringLen($sExeName) + 1
For $i = 1 To $aList
$tmp = _WinAPI_GetProcessFileName($aList[$i])
If StringRight($tmp, $len) = '\' & $sExeName Then
$sAll &= $tmp & ' |' & $aList[$i] & @CRLF
If $tmp = $sKillPath & $sExeName Then $KillPid = $aList[$i]
EndIf
Next
Local $aList = StringRegExp($sAll, '\V+', 3)
If @error Then
MsgBox(48, '', $sExeName & ' 未运行')
ElseIf UBound($aList) = 1 Then
MsgBox(64, '', $sExeName & ' 仅有一个在运行:' & @LF & $sAll)
Else
If MsgBox(48 + 4, '', $sExeName & ' 有多个在运行:' & @LF & $sAll & @LF & @LF & '是否结束:' & $sKillPath & $sExeName) = 6 Then
If ProcessClose($KillPid) Then MsgBox(64, '', $sKillPath & $sExeName & ' 已结束')
EndIf
EndIf
http://www.autoitx.com/forum.php?mod=viewthread&tid=1703&highlight=%BD%E1%CA%F8%BD%F8%B3%CC 删除的部分搞定了,但是判断部分不行,上面的语句是判断多少个同样的进程
不能根据路径来判断
大大们好人做到底,能出个直接判断的脚本案例么
例如: D:\QQ\QQ.exe 判断这个路径的这个进程是否存在
afan 发表于 2015-3-14 16:39 http://www.autoitx.com/images/common/back.gif
大大的脚本判断语句是判断是否有多个一样的进程,我现在想单独判断指定的进程是否存在。
有朋友写了这段代码但是有问题,可否帮忙修复一下
#include <WinAPIEx.au3>
#include <array.au3>
$list = ProcessList()
ReDim $list
$hToken = _WinAPI_OpenProcessToken(BitOR($Token_adjust_privileges, $Token_query))
_WinAPI_AdjustTokenPrivileges($hToken, $se_debug_name,1,2)
For $i=1 To $list
$list[$i]=_WinAPI_GetProcessFileName($list[$i])
If $list[$i]="D:\QQ\QQ.exe" Then
MsgBox(0,0,"该进程存在)
EndIf
Next
_WinAPI_AdjustTokenPrivileges($hToken, $se_debug_name,2,1)
_WinAPI_CloseHandle($hToken)
_ArrayDisplay($list) 回复 10# ywc195
这么伸手有点过分了 回复 11# netegg
真心看过资料,自己实在搞不定了才来的。 看发帖的时间,几乎每天都用了几个小时搞这个问题
我也想自己能搞懂 先获取进程列表,找出你的进程名,不管是一个还是多个,数组筛选一下就行了,然后根据pid找出对应的命令行就行了
7# afan不是给你答案了吗 先获取进程列表,找出你的进程名,不管是一个还是多个,数组筛选一下就行了,然后根据pid找出对应的命令行就 ...
netegg 发表于 2015-3-16 13:32 http://www.autoitx.com/images/common/back.gif
确实,我那楼完全是按一楼描述定制的,如果替换为实际路径都不会… 回复 10# ywc195
如果哪里不会就应该及时提问,闷着搞需要一定的基础… 7楼是完全按一楼的描述帮你定制的,你说判断部分不行?对照一楼的描述,哪里不行?
有时候真心不愿再次回复#include <WinAPIEx.au3>
$sPath = 'D:\QQ\QQ.exe'
Local $aList = ProcessList(), $i
For $i = 1 To $aList
If _WinAPI_GetProcessFileName($aList[$i]) = $sPath Then MsgBox(0, $sPath, '该进程Pid存在:' & $aList[$i])
Next
页:
[1]
2