q115643492 发表于 2011-7-5 15:05:33

(已解决)请教如何 结束路径为指定目录下的所有进程

本帖最后由 q115643492 于 2011-7-10 13:50 编辑

请教如何 结束路径为指定目录下的所有进程 ,进程名未知。比如结束路径为c:\1下的所有进程。

星雨朝霞 发表于 2011-7-5 16:01:22

1.列出所有进程PID
ProcessList   基本函数
2.取每个进程路径
GetModuleFileNameEx   API函数
3.判断其路径为指定路径的就结束它
ProcessClose   基本函数

q115643492 发表于 2011-7-5 16:15:03

谢谢,思路我懂,可是组织代码时有点雾水,看了几个相关帖子,还是写不完整,麻烦还是示范哈子代码。谢谢!

星雨朝霞 发表于 2011-7-5 16:49:41

Local $MonitorDir='D:\My Tool\'
While 1
        $array=ProcessList()
        For $i=1 To $array
                If StringInStr(_GetModuleFileNameEx($array[$i]),$MonitorDir) Then ProcessClose($array[$i])
        Next
        Sleep(250)
WEnd

Func _GetModuleFileNameEx($_Pid)
      $_Hwnd=DllCall("Kernel32.dll","hwnd","OpenProcess","dword",0x0400+0x0010,"int",0,"dword",$_Pid)      
      $_Return=DllCall("Psapi.dll","long","GetModuleFileNameEx","hwnd",$_Hwnd,"long",0,"str",0,"long",255)      
      DllCall("Kernel32.dll","int","CloseHandle","hwnd",$_Hwnd)      
      If StringInStr($_Return,"\") Then Return $_Return
      Return ""
EndFunc

q115643492 发表于 2011-7-10 13:50:25

谢谢,已经解决。
页: [1]
查看完整版本: (已解决)请教如何 结束路径为指定目录下的所有进程