gameboy2050 发表于 2008-10-19 01:08:20

如何获取相同程序第二个进程的PID并直接把这个PID结束掉!

我做了个系统托盘程序,我想设置成只能运行一个程序,找了半天没解决 新手FAQ也看了,是针对有窗口的。

如何获取第二个进程的PID并直接把这个PID结束掉!

我是刚学的,具体的命令我也清楚一点,就是还不太会!

在线等求解!!谢谢了!:( 如下图一样的效果

[ 本帖最后由 gameboy2050 于 2008-10-22 11:31 编辑 ]

gameboy2050 发表于 2008-10-19 01:18:39

:face (13): :face (13):

stwcb2007 发表于 2008-10-20 00:14:51

dim $g_szVersion;定义变量
$g_szVersion = "我的脚本";给变量赋值
If WinExists($g_szVersion)Then;如果此脚本已经运行,则退出
        MsgBox(16, "貌似程序已经运行" ,"貌似程序已经运行,本程序将退出!",3)
        Exit
Else
        ToolTip("你选择了我!")
        sleep(5000)
EndIf
AutoItWinSetTitle($g_szVersion)

kemyliu 发表于 2008-10-20 08:31:44

楼上贴的与问题没有关系啊

gameboy2050 发表于 2008-10-20 15:46:19

还是谢谢了@@@我再找找吧

liongodmien 发表于 2008-10-20 16:41:54

不是很清楚你的意思!

你看一看这个合用不:

WinGetProcess
--------------------------------------------------------------------------------

获取指定窗口的相关进程ID(PID)。

sanmoking 发表于 2008-10-21 09:31:50

楼上,楼主意思是,对于一个没有窗口的进程,怎么防止他自身多次运行?
例如test.exe这个文件运行时没有窗体,所以不能用检测窗口的方法来防止重复运行,也不能用检测进程的方法,因为检测到的进程都是“test.exe”。。。。。

gzken 发表于 2008-10-21 14:44:53

$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

sanmoking 发表于 2008-10-21 18:47:57

多谢楼上。

sanhen 发表于 2008-10-21 22:27:26

又是一个没有认真查看FAQ的新手。。。建议多翻下论坛。

gameboy2050 发表于 2008-10-22 11:30:29

找到了,理解能力比较差,谢谢大家!!!:face (18):

zgb85 发表于 2008-11-26 18:42:19

原帖由 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,连桌面什么的都不要了???这个根本无法实现的,我试过搞双进程保护的,要多复制一个不同名的文件才行。

wuxeon 发表于 2008-12-2 18:26:54

原帖由 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 编辑 ]

liyi-softs 发表于 2008-12-15 13:24:34

俺也是这个问题.....

不知道如果判断有三个QQ.exe以上就结束QQ.exe.....

还望高手指教~!!!!

121044246 发表于 2009-8-24 09:15:44

我是这样写的
$1 = ProcessExists(@ScriptName)
$list = ProcessList(@ScriptName)
For $i = 1 To $list
        If $list[$i] <> $1 Then Exit
Next
页: [1] 2
查看完整版本: 如何获取相同程序第二个进程的PID并直接把这个PID结束掉!