如何获取相同程序第二个进程的PID并直接把这个PID结束掉!
我做了个系统托盘程序,我想设置成只能运行一个程序,找了半天没解决 新手FAQ也看了,是针对有窗口的。如何获取第二个进程的PID并直接把这个PID结束掉!
我是刚学的,具体的命令我也清楚一点,就是还不太会!
在线等求解!!谢谢了!:( 如下图一样的效果
[ 本帖最后由 gameboy2050 于 2008-10-22 11:31 编辑 ] :face (13): :face (13): dim $g_szVersion;定义变量
$g_szVersion = "我的脚本";给变量赋值
If WinExists($g_szVersion)Then;如果此脚本已经运行,则退出
MsgBox(16, "貌似程序已经运行" ,"貌似程序已经运行,本程序将退出!",3)
Exit
Else
ToolTip("你选择了我!")
sleep(5000)
EndIf
AutoItWinSetTitle($g_szVersion) 楼上贴的与问题没有关系啊 还是谢谢了@@@我再找找吧 不是很清楚你的意思!
你看一看这个合用不:
WinGetProcess
--------------------------------------------------------------------------------
获取指定窗口的相关进程ID(PID)。 楼上,楼主意思是,对于一个没有窗口的进程,怎么防止他自身多次运行?
例如test.exe这个文件运行时没有窗体,所以不能用检测窗口的方法来防止重复运行,也不能用检测进程的方法,因为检测到的进程都是“test.exe”。。。。。 $PID=run("ur program");
$aProcess=ProcessList("ur program");
For $i=1 To $aProcess
if $aProcess[$i] <> $PID ;It's not my own!!
ProcessClose($aProcess[$i]);
next 多谢楼上。 又是一个没有认真查看FAQ的新手。。。建议多翻下论坛。 找到了,理解能力比较差,谢谢大家!!!:face (18): 原帖由 gzken 于 2008-10-21 14:44 发表 http://www.autoitx.com/images/common/back.gif
$PID=run("ur program");
$aProcess=ProcessList("ur program");
For $i=1 To $aProcess
if $aProcess[$i]$PID ;It's not my own!!
ProcessClose($aProcess[$i]);
next
如果我那个进程名是explorer.exe,连桌面什么的都不要了???这个根本无法实现的,我试过搞双进程保护的,要多复制一个不同名的文件才行。 原帖由 sanhen 于 2008-10-21 22:27 发表 http://www.autoitx.com/images/common/back.gif
又是一个没有认真查看FAQ的新手。。。建议多翻下论坛。
管理员你好,我也是这个问题,无窗口的程序,所以不能用winexists函数,用processexists返回的只能是pid或者0,上面有个高手发的代码通过processlist参数循环kill非相同的pid,我还是不知道怎么实现,新手请多多包涵,高手发的那段代码不能编译:(显示缺少then语句。
[ 本帖最后由 wuxeon 于 2008-12-2 18:27 编辑 ] 俺也是这个问题.....
不知道如果判断有三个QQ.exe以上就结束QQ.exe.....
还望高手指教~!!!! 我是这样写的
$1 = ProcessExists(@ScriptName)
$list = ProcessList(@ScriptName)
For $i = 1 To $list
If $list[$i] <> $1 Then Exit
Next
页:
[1]
2