anythinging 发表于 2019-11-15 13:14:06

【已解决】求助,结束当前用户进程的函数

本帖最后由 anythinging 于 2019-11-15 19:26 编辑

各位大人,我想结束当前用户的某一个进程,尝试使用_rundos 调用taskkill能实现但是很慢,使用ProcessClose好象有 在存在多个进程的情况下的不足之处(多个相同进程时好象只能结束PID 最高的进程)。

看帮助理解了一点点,好象可以通过ProcessList列出进程,再通过_WinAPI_GetProcessID匹配当前用户名称确定进程id,然后再用ProcessClose关闭进程,不知理解的对不对?但无耐水平有限,无法写出代码,恳请指点!

谢谢!

zghwelcome 发表于 2019-11-15 16:27:52

**** Hidden Message *****

tubaba 发表于 2019-11-15 15:06:02

                Do
                        ProcessClose('进程名称')
                        ProcessWaitClose('进程名称')
                        Sleep(10)
                Until Not ProcessExists('进程名称')

anythinging 发表于 2019-11-15 15:38:52

tubaba 发表于 2019-11-15 15:06
Do
                        ProcessClose('进程名称')
                        ProcessWaitClose('进程名称')


感谢回复,这个不能按用户区分进程,比如如果用管理员的话,会把其它用户的进程也结束了。我是想结束当前用户的进程,谢谢!

anythinging 发表于 2019-11-15 15:40:04

比如在同一台电脑上2个用户,用户a和用户b都运行了一个notepad.exe,用户a只结束自己的notepad.exe,不管用户b的

anythinging 发表于 2019-11-15 15:42:09

参考之前的案例,我只能写到这Func _ProcessUser($ProcessName, $sUser = @UserName)
        Local $aProcess = ProcessList($ProcessName)

之后好象是要用到_winapi之类的

anythinging 发表于 2019-11-15 19:16:17

zghwelcome 发表于 2019-11-15 16:27
**** 本内容被作者隐藏 ****

还想请教一下,如果要清除当前用户所有的notepad.exe进程,下面是否对?
If IsArray($aAry) Then
   For $ii = 1 To $aAry
   ProcessClose($aAry[$ii])
   Next
                EndIf我这样做会提示个错误,直接退出。我想应该是我对数组操作的错误,还请指点,谢谢!

zghwelcome 发表于 2019-11-15 19:18:25

If IsArray($aAry) Then
        For $ii = 0 To UBound($aAry) - 1
                ProcessClose($aAry[$ii])
        Next
EndIf



floor6ggg 发表于 2019-11-15 23:14:44

我猜想,应该还是靠句柄,同样的程序,句柄却是唯一。。。看看答案。。。

dnvplj 发表于 2019-11-16 23:47:50

谢谢分享,学习学习。

风过无痕 发表于 2019-11-18 10:37:10

我看看是什么内容啊
页: [1]
查看完整版本: 【已解决】求助,结束当前用户进程的函数