找回密码
 加入
搜索
查看: 3403|回复: 16

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

[复制链接]
发表于 2008-10-19 01:08:20 | 显示全部楼层 |阅读模式
我做了个系统托盘程序,我想设置成只能运行一个程序,找了半天没解决 新手FAQ也看了,是针对有窗口的。

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

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

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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2008-10-19 01:18:39 | 显示全部楼层
发表于 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)
发表于 2008-10-20 08:31:44 | 显示全部楼层
楼上贴的与问题没有关系啊
 楼主| 发表于 2008-10-20 15:46:19 | 显示全部楼层
还是谢谢了@@@我再找找吧
发表于 2008-10-20 16:41:54 | 显示全部楼层
不是很清楚你的意思!

你看一看这个合用不:

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

获取指定窗口的相关进程ID(PID)。
发表于 2008-10-21 09:31:50 | 显示全部楼层
楼上,楼主意思是,对于一个没有窗口的进程,怎么防止他自身多次运行?
例如test.exe这个文件运行时没有窗体,所以不能用检测窗口的方法来防止重复运行,也不能用检测进程的方法,因为检测到的进程都是“test.exe”。。。。。
发表于 2008-10-21 14:44:53 | 显示全部楼层
$PID=run("ur program");
$aProcess=ProcessList("ur program");
For $i=1 To $aProcess[0][0]
    if $aProcess[$i][1] <> $PID ;It's not my own!!
    ProcessClose($aProcess[$i][1]);
next
发表于 2008-10-21 18:47:57 | 显示全部楼层
多谢楼上。
发表于 2008-10-21 22:27:26 | 显示全部楼层
又是一个没有认真查看FAQ的新手。。。建议多翻下论坛。
 楼主| 发表于 2008-10-22 11:30:29 | 显示全部楼层
找到了,理解能力比较差,谢谢大家!!!
发表于 2008-11-26 18:42:19 | 显示全部楼层
原帖由 gzken 于 2008-10-21 14:44 发表
$PID=run("ur program");
$aProcess=ProcessList("ur program");
For $i=1 To $aProcess[0][0]
    if $aProcess[$i][1]  $PID ;It's not my own!!
    ProcessClose($aProcess[$i][1]);
next

如果我那个进程名是explorer.exe,连桌面什么的都不要了???这个根本无法实现的,我试过搞双进程保护的,要多复制一个不同名的文件才行。
发表于 2008-12-2 18:26:54 | 显示全部楼层
原帖由 sanhen 于 2008-10-21 22:27 发表
又是一个没有认真查看FAQ的新手。。。建议多翻下论坛。


管理员你好,我也是这个问题,无窗口的程序,所以不能用winexists函数,用processexists返回的只能是pid或者0,上面有个高手发的代码通过processlist参数循环kill非相同的pid,我还是不知道怎么实现,新手请多多包涵,高手发的那段代码不能编译:(显示缺少then语句。

[ 本帖最后由 wuxeon 于 2008-12-2 18:27 编辑 ]
发表于 2008-12-15 13:24:34 | 显示全部楼层
俺也是这个问题.....

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

还望高手指教~!!!!
发表于 2009-8-24 09:15:44 | 显示全部楼层
我是这样写的
$1 = ProcessExists(@ScriptName)
$list = ProcessList(@ScriptName)
For $i = 1 To $list[0][0]
        If $list[$i][1] <> $1 Then Exit
Next
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-28 11:52 , Processed in 0.089839 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表