kisyan 发表于 2009-9-17 11:04:40

结束指定目录下的进程

本帖最后由 kisyan 于 2009-9-17 11:08 编辑

我需要结束进程为C:\Program Files\KingStone\ClientLock\svchost.exe 路径的svchost.exe
后再运行它 不知道有没有办法办到
各位高手们帮忙看下

因为这个进程电脑运行时间久了网页打不开

netegg 发表于 2009-9-17 11:19:31

怎么和系统进程一个名字

afan 发表于 2009-9-17 11:29:55

$spath = 'C:\Program Files\KingStone\ClientLock\svchost.exe'
$objWMIService = ObjGet("winmgmts:\\.\root\CIMV2:win32_process")
$colItems = $objWMIService.instances_
For $objItem In $colItems
        If $objItem.executablepath = $spath Then ProcessClose($objItem.ProcessId)
Next
Run($spath)

sunafter 发表于 2009-9-17 11:34:23

牛,学习学习

kisyan 发表于 2009-9-17 12:49:10

3# afan


感谢 AFAN兄
代码我测试一下

kisyan 发表于 2009-9-17 21:40:27

我试了一下这段代码
需要10几秒钟才能执行完成不知道能不能结束后马上执行svchost.exe这个文件

afan 发表于 2009-9-17 22:53:48

本帖最后由 afan 于 2009-9-17 23:05 编辑

可能是结束需要等待吧~
你可以在最后一句Run($spath) 前面加一句 Msgbox(0,0,'结束进程') 看看是否执行完结束进程Dim $a, $spath = 'C:\Program Files\KingStone\ClientLock\svchost.exe'
$objWMIService = ObjGet("winmgmts:\\.\root\CIMV2:win32_process")
$colItems = $objWMIService.instances_
For $objItem In $colItems
      If $objItem.executablepath = $spath Then
            $a = $objItem.ProcessId
            ProcessClose($a)
      Endif
Next
If ProcessExists($a) = 0 then msgbox(0, 0, $spath & ' 进程已结束')
Run($spath)

bing614 发表于 2009-9-20 01:05:10

#include<winapi.au3>
Dim $_Path="C:\Program Files\Internet Explorer\IEXPLORE.EXE"
$_Process=StringMid($_Path,StringInStr($_Path,"\",0,-1)+1,StringLen($_Path))
$_List=ProcessList($_Process)
for $i=1 To $_List
        If _GetModuleFileNameEx($_List[$i])=$_Path Then ProcessClose($_List[$i])
Next

Func _GetModuleFileNameEx($pid)
        $_Prhwnd = DllCall('Kernel32.dll', 'hwnd', 'OpenProcess', 'long', 0x10+0x400, 'int', 0, 'long',$pid)       
        If $_Prhwnd=0 Then Return _WinAPI_GetLastError()
        $_Return = DllCall('PSAPI.DLL', 'long', 'GetModuleFileNameEx', 'hwnd', $_Prhwnd, 'hwnd', 0, 'str', 0,"dword",255)       
        _WinAPI_CloseHandle($_Prhwnd)
        Return $_Return
EndFunc
页: [1]
查看完整版本: 结束指定目录下的进程