返回列表 回复 发帖

Autoit显示自动运行列表

代码是用AU3调用WMI写的。不想列注册表。因为有的帐户注册表路径不一样的。
代码乱七八糟的。看不懂的提出,我再整理发出来。。。嘿嘿。。。

  1. #include <GuiConstants.au3>
  2. #include <GuiListView.au3>
  3. HotKeySet( "{F5}" , "_Refresh" )
  4. $wbemFlagReturnImmediately = 0x10
  5. $wbemFlagForwardOnly = 0x20
  6. $strComputer = "localhost"

  7. GUICreate("自动运行",700, 450)
  8.          
  9.         $runlistView = GUICtrlCreateListView("程序名称|程序路径|注册表路径",5, 5,750,490)

  10. GUICtrlSendMsg($runlistview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
  11. GUICtrlSendMsg($runlistview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)

  12.                  _GUICtrlListViewSetColumnWidth ($runlistview, 0,100)
  13.                          _GUICtrlListViewSetColumnWidth ($runlistview, 1,200)
  14.              _GUICtrlListViewSetColumnWidth ($runlistview, 2,400)

  15. $contextmenu = GUICtrlCreateContextMenu ($runlistview)
  16. $kill             = GUICtrlCreateMenuitem ("删除", $contextmenu)
  17. $Refresh          = GUICtrlCreateMenuitem ("刷新", $contextmenu)
  18. _runlist()

  19. GuiSetState(@SW_SHOW)

  20.         While 1
  21.         
  22.                 $msg = GUIGetMsg()
  23.         
  24.                   Select
  25.                         Case $msg = $kill
  26.                $info= _GUICtrlListViewGetItemText($runlistview, _GUICtrlListViewGetSelectedIndices($runlistview), 0)
  27.                           $reg=  _GUICtrlListViewGetItemText($runlistview, _GUICtrlListViewGetSelectedIndices($runlistview), 2)
  28.                     $patch= $reg&"\"&$info
  29.                                         ;MsgBox(0,"slkdjf", $patch)
  30.                         RegDelete($reg&"\",$info)
  31.                                          _Refresh()
  32.                                         Case $msg = $Refresh  
  33.                           _Refresh()
  34.                           Case $msg = $GUI_EVENT_CLOSE
  35.         
  36.          ExitLoop
  37.                  EndSelect
  38.                
  39.         WEnd
  40. Func _runlist()
  41.         
  42.         $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
  43. $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_StartupCommand", "WQL", _
  44.                                           $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
  45.    For $objItem In $colItems
  46.            
  47.            
  48.            local $processData = ($objItem.Caption & "|" &$objItem.Command &"|" &$objItem.Location )
  49. GUICtrlCreateListViewItem($processData,$runlistView)
  50.   Next
  51.   

  52.   $ini=_GUICtrlListViewGetItemCount ($runlistview)
  53.                
  54.                 ;MsgBox(0, "Passed Item Index only", $a)
  55.                 For $i = 0 To $ini-1
  56.                         
  57.                 $desktop =_GUICtrlListViewGetItemText($runlistview,$i,0)
  58.                
  59.                 If $desktop ="desktop" Then
  60.                 _GUICtrlListViewDeleteItem ($runlistview,$i)
  61. EndIf
  62.                 ;MsgBox(0, "asldjkf", $a)
  63.         Next
  64.         EndFunc
  65.   
  66.   
  67. Func _Refresh()
  68.         
  69.                                        
  70.         _GUICtrlListViewDeleteAllItems ($runlistview)
  71.         
  72.                         $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
  73. $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_StartupCommand", "WQL", _
  74.                                           $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
  75.                
  76.    For $objItem In $colItems
  77.            
  78.            
  79.            local $processData = ($objItem.Caption & "|" &$objItem.Command &"|" &$objItem.Location )
  80. GUICtrlCreateListViewItem($processData,$runlistView)
  81.   Next

  82.   $a=_GUICtrlListViewGetItemCount ($runlistview)
  83.                
  84.                 ;MsgBox(0, "Passed Item Index only", $a)
  85.                 For $i = 0 To $a-1
  86.                         
  87.                 $desk =_GUICtrlListViewGetItemText($runlistview,$i,0)
  88.                
  89.                 If $desk="desktop" Then
  90.                 _GUICtrlListViewDeleteItem ($runlistview,$i)
  91. EndIf
  92.                 ;MsgBox(0, "asldjkf", $a)
  93.         Next
  94.         
  95.         EndFunc
复制代码
文章来源AUTOIT中文论坛www.autoit.net.cn,本贴原地址:http://www.autoit.net.cn/viewthread.php?tid=128
感谢Baidu,Google,Dreams8给我这次机会!
还要感谢我的爸爸妈妈!
HOHO
返回列表