呵呵,对比LZ与顽固代码之后,GUI代码是正确的,但只是结束的条件错误导致无法终止进程!func proclose()
$pro = stringsplit(GUICtrlRead(GUICtrlRead($listview1)),"|")
if $pro[0] = 2 then
这里面的"="改为">"或">=",条件为真 就能结束掉!if $pro[0] = 2 then
if ProcessExists($pro[2]) then
msgbox(4096,"错误","无法终止进程!")
return
endif
endif
这句代码也有误,“=”应该改为“<” 这样条件为假时,会弹出“错误,无法终止进程”对话框。其实没有这段代码也没事!
func proclose() 这个函数是否有错误... 这个...偶也不懂..55
$pro[0] ,$pro[2] 表示什么意思?, 听顽固的!!!
下面是偶改的代码:#notrayicon
#Include <GUIConstants.au3>
dim $ListView1
GUICreate("简单的进程管理器", 257, 364)
$Button1 = GUICtrlCreateButton("结束进程", 8, 328, 105, 25)
$Button2 = GUICtrlCreateButton("刷新列表", 144, 328, 105, 25)
$ListView1 = list()
GUISetState(@SW_SHOW)
While 1
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $Button1
proclose()
Case $msg = $Button2
$ListView1 = list()
EndSelect
WEnd
Exit
func list()
if $ListView1 then GUICtrlDelete($ListView1)
$list = ProcessList()
$ListView1 = GUICtrlCreateListView("进程名 |PID ", 8, 8, 241, 305)
for $i = 1 to $list[0][0]
GUICtrlCreateListViewItem($list[$i][0]&"|"&$list[$i][1],$listview1)
next
return $ListView1
endfunc
func proclose()
$pro = stringsplit(GUICtrlRead(GUICtrlRead($listview1)),"|")
if $pro[0] > 2 then
if ProcessExists($pro[2]) then ProcessClose($pro[2]) ;;runwait(@ComSpec & " /c taskkill /f /t /pid " & $pro[2],"",@sw_hide)
else
msgbox(4096,"错误","无法终止进程!")
EndIf
sleep(1000)
$ListView1 = list()
endfunc
|