【已解决】求助,结束当前用户进程的函数
本帖最后由 anythinging 于 2019-11-15 19:26 编辑各位大人,我想结束当前用户的某一个进程,尝试使用_rundos 调用taskkill能实现但是很慢,使用ProcessClose好象有 在存在多个进程的情况下的不足之处(多个相同进程时好象只能结束PID 最高的进程)。
看帮助理解了一点点,好象可以通过ProcessList列出进程,再通过_WinAPI_GetProcessID匹配当前用户名称确定进程id,然后再用ProcessClose关闭进程,不知理解的对不对?但无耐水平有限,无法写出代码,恳请指点!
谢谢!
**** Hidden Message *****
Do
ProcessClose('进程名称')
ProcessWaitClose('进程名称')
Sleep(10)
Until Not ProcessExists('进程名称') tubaba 发表于 2019-11-15 15:06
Do
ProcessClose('进程名称')
ProcessWaitClose('进程名称')
感谢回复,这个不能按用户区分进程,比如如果用管理员的话,会把其它用户的进程也结束了。我是想结束当前用户的进程,谢谢! 比如在同一台电脑上2个用户,用户a和用户b都运行了一个notepad.exe,用户a只结束自己的notepad.exe,不管用户b的 参考之前的案例,我只能写到这Func _ProcessUser($ProcessName, $sUser = @UserName)
Local $aProcess = ProcessList($ProcessName)
之后好象是要用到_winapi之类的
zghwelcome 发表于 2019-11-15 16:27
**** 本内容被作者隐藏 ****
还想请教一下,如果要清除当前用户所有的notepad.exe进程,下面是否对?
If IsArray($aAry) Then
For $ii = 1 To $aAry
ProcessClose($aAry[$ii])
Next
EndIf我这样做会提示个错误,直接退出。我想应该是我对数组操作的错误,还请指点,谢谢!
If IsArray($aAry) Then
For $ii = 0 To UBound($aAry) - 1
ProcessClose($aAry[$ii])
Next
EndIf
我猜想,应该还是靠句柄,同样的程序,句柄却是唯一。。。看看答案。。。 谢谢分享,学习学习。 我看看是什么内容啊
页:
[1]