Board logo

标题: 如何列举进程 [打印本页]

作者: wert123     时间: 2007-6-27 20:19    标题: 如何列举进程

下面代码我从网上copy来的,怎样不能列举进程啊,请高手帮忙改改
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & strComputer & "rootcimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Process",,48)
For Each objItem in colItems
    Wscript.Echo "Caption: " & objItem.Caption
    Wscript.Echo "CommandLine: " & objItem.CommandLine
    Wscript.Echo "CreationClassName: " & objItem.CreationClassName
    Wscript.Echo "CreationDate: " & objItem.CreationDate
    Wscript.Echo "CSCreationClassName: " & objItem.CSCreationClassName
    Wscript.Echo "CSName: " & objItem.CSName
    Wscript.Echo "Description: " & objItem.Description
    Wscript.Echo "ExecutablePath: " & objItem.ExecutablePath
    Wscript.Echo "ExecutionState: " & objItem.ExecutionState
    Wscript.Echo "Handle: " & objItem.Handle
    Wscript.Echo "HandleCount: " & objItem.HandleCount
    Wscript.Echo "InstallDate: " & objItem.InstallDate
    Wscript.Echo "KernelModeTime: " & objItem.KernelModeTime
    Wscript.Echo "MaximumWorkingSetSize: " & objItem.MaximumWorkingSetSize
    Wscript.Echo "MinimumWorkingSetSize: " & objItem.MinimumWorkingSetSize
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo "OSCreationClassName: " & objItem.OSCreationClassName
    Wscript.Echo "OSName: " & objItem.OSName
    Wscript.Echo "OtherOperationCount: " & objItem.OtherOperationCount
    Wscript.Echo "OtherTransferCount: " & objItem.OtherTransferCount
    Wscript.Echo "PageFaults: " & objItem.PageFaults
    Wscript.Echo "PageFileUsage: " & objItem.PageFileUsage
    Wscript.Echo "ParentProcessId: " & objItem.ParentProcessId
    Wscript.Echo "PeakPageFileUsage: " & objItem.PeakPageFileUsage
    Wscript.Echo "PeakVirtualSize: " & objItem.PeakVirtualSize
    Wscript.Echo "PeakWorkingSetSize: " & objItem.PeakWorkingSetSize
    Wscript.Echo "Priority: " & objItem.Priority
    Wscript.Echo "PrivatePageCount: " & objItem.PrivatePageCount
    Wscript.Echo "ProcessId: " & objItem.ProcessId
    Wscript.Echo "QuotaNonPagedPoolUsage: " & objItem.QuotaNonPagedPoolUsage
    Wscript.Echo "QuotaPagedPoolUsage: " & objItem.QuotaPagedPoolUsage
    Wscript.Echo "QuotaPeakNonPagedPoolUsage: " & objItem.QuotaPeakNonPagedPoolUsage
    Wscript.Echo "QuotaPeakPagedPoolUsage: " & objItem.QuotaPeakPagedPoolUsage
    Wscript.Echo "ReadOperationCount: " & objItem.ReadOperationCount
    Wscript.Echo "ReadTransferCount: " & objItem.ReadTransferCount
    Wscript.Echo "SessionId: " & objItem.SessionId
    Wscript.Echo "Status: " & objItem.Status
    Wscript.Echo "TerminationDate: " & objItem.TerminationDate
    Wscript.Echo "ThreadCount: " & objItem.ThreadCount
    Wscript.Echo "UserModeTime: " & objItem.UserModeTime
    Wscript.Echo "VirtualSize: " & objItem.VirtualSize
    Wscript.Echo "WindowsVersion: " & objItem.WindowsVersion
    Wscript.Echo "WorkingSetSize: " & objItem.WorkingSetSize
    Wscript.Echo "WriteOperationCount: " & objItem.WriteOperationCount
    Wscript.Echo "WriteTransferCount: " & objItem.WriteTransferCount
        If MsgBox("Press OK to resume next ,or CANCEL to quite...",1) = 2 Then
                Wscript.Quit
        End If
Next
[ Last edited by bjsh on 2007-7-31 at 10:31 AM ]
作者: lxmxn     时间: 2007-6-27 20:54

For Each objItem In Getobject _
("winmgmts:\\.\root\cimv2:win32_process").instances_
    msgbox "Caption: " & objItem.Caption
    msgbox "CommandLine: " & objItem.CommandLine
    msgbox "CreationClassName: " & objItem.CreationClassName
    msgbox "CreationDate: " & objItem.CreationDate
    msgbox "CSCreationClassName: " & objItem.CSCreationClassName
    msgbox "CSName: " & objItem.CSName
    msgbox "Description: " & objItem.Description
    msgbox "ExecutablePath: " & objItem.ExecutablePath
    msgbox "ExecutionState: " & objItem.ExecutionState
    msgbox "Handle: " & objItem.Handle
    msgbox "HandleCount: " & objItem.HandleCount
    msgbox "InstallDate: " & objItem.InstallDate
    msgbox "KernelModeTime: " & objItem.KernelModeTime
    msgbox "MaximumWorkingSetSize: " & objItem.MaximumWorkingSetSize
    msgbox "MinimumWorkingSetSize: " & objItem.MinimumWorkingSetSize
    msgbox "Name: " & objItem.Name
    msgbox "OSCreationClassName: " & objItem.OSCreationClassName
    msgbox "OSName: " & objItem.OSName
    msgbox "OtherOperationCount: " & objItem.OtherOperationCount
    msgbox "OtherTransferCount: " & objItem.OtherTransferCount
    msgbox "PageFaults: " & objItem.PageFaults
    msgbox "PageFileUsage: " & objItem.PageFileUsage
    msgbox "ParentProcessId: " & objItem.ParentProcessId
    msgbox "PeakPageFileUsage: " & objItem.PeakPageFileUsage
    msgbox "PeakVirtualSize: " & objItem.PeakVirtualSize
    msgbox "PeakWorkingSetSize: " & objItem.PeakWorkingSetSize
    msgbox "Priority: " & objItem.Priority
    msgbox "PrivatePageCount: " & objItem.PrivatePageCount
    msgbox "ProcessId: " & objItem.ProcessId
    msgbox "QuotaNonPagedPoolUsage: " & objItem.QuotaNonPagedPoolUsage
    msgbox "QuotaPagedPoolUsage: " & objItem.QuotaPagedPoolUsage
    msgbox "QuotaPeakNonPagedPoolUsage: " & objItem.QuotaPeakNonPagedPoolUsage
    msgbox "QuotaPeakPagedPoolUsage: " & objItem.QuotaPeakPagedPoolUsage
    msgbox "ReadOperationCount: " & objItem.ReadOperationCount
    msgbox "ReadTransferCount: " & objItem.ReadTransferCount
    msgbox "SessionId: " & objItem.SessionId
    msgbox "Status: " & objItem.Status
    msgbox "TerminationDate: " & objItem.TerminationDate
    msgbox "ThreadCount: " & objItem.ThreadCount
    msgbox "UserModeTime: " & objItem.UserModeTime
    msgbox "VirtualSize: " & objItem.VirtualSize
    msgbox "WindowsVersion: " & objItem.WindowsVersion
    msgbox "WorkingSetSize: " & objItem.WorkingSetSize
    msgbox "WriteOperationCount: " & objItem.WriteOperationCount
    msgbox "WriteTransferCount: " & objItem.WriteTransferCount
        If MsgBox("Press OK to resume next ,or CANCEL to quite...",1) = 2 Then
                Wscript.Quit
        End If
Next

作者: wert123     时间: 2007-6-28 16:45
lxmxn斑竹大师啊,你好幽默啊
鼠标点都点不完啊,死循环了啊,输出界面能弄好看些吗,比如用记事本输出或者hta可以吗

[ Last edited by wert123 on 2007-6-28 at 04:46 PM ]
作者: wert123     时间: 2007-6-28 16:49
谁会写个hta的啊
作者: lxmxn     时间: 2007-6-28 17:52
呵.

我只是看上面运行不正常,修改了一下,也没想那么多哈。
作者: wudixin96     时间: 2007-6-28 18:05

On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & strComputer & "rootcimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Process",,48)
For Each objItem in colItems
    Wscript.Echo "Caption: " & objItem.Caption & vbCrLf & _
    "CommandLine: " & objItem.CommandLine & vbCrLf & _
    "CreationClassName: " & objItem.CreationClassName & vbCrLf & _
    "CreationDate: " & objItem.CreationDate & vbCrLf & _
    "CSCreationClassName: " & objItem.CSCreationClassName & vbCrLf & _
    "CSName: " & objItem.CSName & vbCrLf & _
    "Description: " & objItem.Description & vbCrLf & _
    "ExecutablePath: " & objItem.ExecutablePath & vbCrLf & _
    "ExecutionState: " & objItem.ExecutionState & vbCrLf & _
    "Handle: " & objItem.Handle & vbCrLf & _
    "HandleCount: " & objItem.HandleCount & vbCrLf & _
    "InstallDate: " & objItem.InstallDate & vbCrLf & _
    "KernelModeTime: " & objItem.KernelModeTime & vbCrLf & _
    "MaximumWorkingSetSize: " & objItem.MaximumWorkingSetSize & vbCrLf & _
    "MinimumWorkingSetSize: " & objItem.MinimumWorkingSetSize & vbCrLf & _
    "Name: " & objItem.Name & vbCrLf & _
    "OSCreationClassName: " & objItem.OSCreationClassName & vbCrLf & _
    "OSName: " & objItem.OSName & vbCrLf & _
    "OtherOperationCount: " & objItem.OtherOperationCount & vbCrLf & _
    "OtherTransferCount: " & objItem.OtherTransferCount & vbCrLf & _
    "PageFaults: " & objItem.PageFaults & vbCrLf & _
    "PageFileUsage: " & objItem.PageFileUsage & vbCrLf & _
    "ParentProcessId: " & objItem.ParentProcessId & vbCrLf & _
    "PeakPageFileUsage: " & objItem.PeakPageFileUsage & vbCrLf & _
    "PeakVirtualSize: " & objItem.PeakVirtualSize & vbCrLf & _
    "PeakWorkingSetSize: " & objItem.PeakWorkingSetSize & vbCrLf & _
    "Priority: " & objItem.Priority & vbCrLf & _
    "PrivatePageCount: " & objItem.PrivatePageCount & vbCrLf & _
    "ProcessId: " & objItem.ProcessId & vbCrLf & _
    "QuotaNonPagedPoolUsage: " & objItem.QuotaNonPagedPoolUsage & vbCrLf & _
    "QuotaPagedPoolUsage: " & objItem.QuotaPagedPoolUsage & vbCrLf & _
    "QuotaPeakNonPagedPoolUsage: " & objItem.QuotaPeakNonPagedPoolUsage & vbCrLf & _
    "QuotaPeakPagedPoolUsage: " & objItem.QuotaPeakPagedPoolUsage & vbCrLf & _
    "ReadOperationCount: " & objItem.ReadOperationCount & vbCrLf & _
    "ReadTransferCount: " & objItem.ReadTransferCount & vbCrLf & _
    "SessionId: " & objItem.SessionId & vbCrLf & _
    "Status: " & objItem.Status & vbCrLf & _
    "TerminationDate: " & objItem.TerminationDate & vbCrLf & _
    "ThreadCount: " & objItem.ThreadCount & vbCrLf & _
    "UserModeTime: " & objItem.UserModeTime & vbCrLf & _
    "VirtualSize: " & objItem.VirtualSize & vbCrLf & _
    "WindowsVersion: " & objItem.WindowsVersion & vbCrLf & _
    "WorkingSetSize: " & objItem.WorkingSetSize & vbCrLf & _
    "WriteOperationCount: " & objItem.WriteOperationCount & vbCrLf & _
    "WriteTransferCount: " & objItem.WriteTransferCount & vbCrLf & _
        If MsgBox("Press OK to resume next ,or CANCEL to quite...",1) = 2 Then
                Wscript.Quit
        End If
Next
这样可能好看点。
作者: zh159     时间: 2007-6-28 21:06
LZ第三句出错,修正:
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
作者: zh159     时间: 2007-6-28 22:08
可以查看所有进程的 HTA 版本
<html>
<title>列举进程 - HTA 版 - by zh159@bbs.cn-dos.net - 2007-6-28</title>

<script language="VBScript">

  width = 800
  height = window.screen.height - 40
  window.resizeTo width, height
  ileft=(window.screen.width-width)/2
  itop=(window.screen.height-height)/2-15
  window.moveTo ileft,itop

</script>

<body style="border: 1 solid #9ab8f6;FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#10bfff,endColorStr=#007db2);color:#ffffff;">
<table width="98%" align="center" style="font: 12px 宋体;"><td><span id="result" style="width:98%; height:98%; font: 15px 宋体;"></span></td></table>
</body>

<script language="VBScript">

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Process",,48)

For Each objItem in colItems
Num = Num + 1
  str = str & Num & ".<hr style='border-style: dashed;'>Caption: " & objItem.Caption & "<br>" & _
    "CommandLine: " & objItem.CommandLine & "<br>" & _
    "CreationClassName: " & objItem.CreationClassName & "<br>" & _
    "CreationDate: " & objItem.CreationDate & "<br>" & _
    "CSCreationClassName: " & objItem.CSCreationClassName & "<br>" & _
    "CSName: " & objItem.CSName & "<br>" & _
    "Description: " & objItem.Description & "<br>" & _
    "ExecutablePath: " & objItem.ExecutablePath & "<br>" & _
    "ExecutionState: " & objItem.ExecutionState & "<br>" & _
    "Handle: " & objItem.Handle & "<br>" & _
    "HandleCount: " & objItem.HandleCount & "<br>" & _
    "InstallDate: " & objItem.InstallDate & "<br>" & _
    "KernelModeTime: " & objItem.KernelModeTime & "<br>" & _
    "MaximumWorkingSetSize: " & objItem.MaximumWorkingSetSize & "<br>" & _
    "MinimumWorkingSetSize: " & objItem.MinimumWorkingSetSize & "<br>" & _
    "Name: " & objItem.Name & "<br>" & _
    "OSCreationClassName: " & objItem.OSCreationClassName & "<br>" & _
    "OSName: " & objItem.OSName & "<br>" & _
    "OtherOperationCount: " & objItem.OtherOperationCount & "<br>" & _
    "OtherTransferCount: " & objItem.OtherTransferCount & "<br>" & _
    "PageFaults: " & objItem.PageFaults & "<br>" & _
    "PageFileUsage: " & objItem.PageFileUsage & "<br>" & _
    "ParentProcessId: " & objItem.ParentProcessId & "<br>" & _
    "PeakPageFileUsage: " & objItem.PeakPageFileUsage & "<br>" & _
    "PeakVirtualSize: " & objItem.PeakVirtualSize & "<br>" & _
    "PeakWorkingSetSize: " & objItem.PeakWorkingSetSize & "<br>" & _
    "Priority: " & objItem.Priority & "<br>" & _
    "PrivatePageCount: " & objItem.PrivatePageCount & "<br>" & _
    "ProcessId: " & objItem.ProcessId & "<br>" & _
    "QuotaNonPagedPoolUsage: " & objItem.QuotaNonPagedPoolUsage & "<br>" & _
    "QuotaPagedPoolUsage: " & objItem.QuotaPagedPoolUsage & "<br>" & _
    "QuotaPeakNonPagedPoolUsage: " & objItem.QuotaPeakNonPagedPoolUsage & "<br>" & _
    "QuotaPeakPagedPoolUsage: " & objItem.QuotaPeakPagedPoolUsage & "<br>" & _
    "ReadOperationCount: " & objItem.ReadOperationCount & "<br>" & _
    "ReadTransferCount: " & objItem.ReadTransferCount & "<br>" & _
    "SessionId: " & objItem.SessionId & "<br>" & _
    "Status: " & objItem.Status & "<br>" & _
    "TerminationDate: " & objItem.TerminationDate & "<br>" & _
    "ThreadCount: " & objItem.ThreadCount & "<br>" & _
    "UserModeTime: " & objItem.UserModeTime & "<br>" & _
    "VirtualSize: " & objItem.VirtualSize & "<br>" & _
    "WindowsVersion: " & objItem.WindowsVersion & "<br>" & _
    "WorkingSetSize: " & objItem.WorkingSetSize & "<br>" & _
    "WriteOperationCount: " & objItem.WriteOperationCount & "<br>" & _
    "WriteTransferCount: " & objItem.WriteTransferCount & "<br><br><br>"
Next
result.innerHtml = str
</script>

</html>
可以复制到剪贴板的 HTA 版本
<html>
<title>列举进程 - HTA 版 - by zh159@bbs.cn-dos.net - 2007-6-28</title>

<script language="VBScript">

  width = 800
  height = 700
  window.resizeTo width, height
  ileft=(window.screen.width-width)/2
  itop=(window.screen.height-height)/2
  window.moveTo ileft,itop

</script>

<body scroll="no" style="border: 1 solid #9ab8f6;FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#10bfff,endColorStr=#007db2);color:#ffffff;">
<table width="100%" align="center" style="font: 12px 宋体;"><td align="center"><textarea id="result" style="width:100%; height:600; font: 13px 宋体;border: 1 solid #9ab8f6;"></textarea><br><input type="button" class1="button" name="Button" value="复制到剪贴板" onClick="copy('result')" style="height:27;border: 1 solid #9ab8f6;FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#10bfff,endColorStr=#007db2);color:#ffffff;cursor:hand;"></td></table>
</body>

<script language="VBScript">

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Process",,48)

For Each objItem in colItems
Num = Num + 1
  str = str & Num & "." & vbCrLf & "================================================================================" & vbCrLf & "Caption: " & objItem.Caption & vbCrLf & _
    "CommandLine: " & objItem.CommandLine & vbCrLf & _
    "CreationClassName: " & objItem.CreationClassName & vbCrLf & _
    "CreationDate: " & objItem.CreationDate & vbCrLf & _
    "CSCreationClassName: " & objItem.CSCreationClassName & vbCrLf & _
    "CSName: " & objItem.CSName & vbCrLf & _
    "Description: " & objItem.Description & vbCrLf & _
    "ExecutablePath: " & objItem.ExecutablePath & vbCrLf & _
    "ExecutionState: " & objItem.ExecutionState & vbCrLf & _
    "Handle: " & objItem.Handle & vbCrLf & _
    "HandleCount: " & objItem.HandleCount & vbCrLf & _
    "InstallDate: " & objItem.InstallDate & vbCrLf & _
    "KernelModeTime: " & objItem.KernelModeTime & vbCrLf & _
    "MaximumWorkingSetSize: " & objItem.MaximumWorkingSetSize & vbCrLf & _
    "MinimumWorkingSetSize: " & objItem.MinimumWorkingSetSize & vbCrLf & _
    "Name: " & objItem.Name & vbCrLf & _
    "OSCreationClassName: " & objItem.OSCreationClassName & vbCrLf & _
    "OSName: " & objItem.OSName & vbCrLf & _
    "OtherOperationCount: " & objItem.OtherOperationCount & vbCrLf & _
    "OtherTransferCount: " & objItem.OtherTransferCount & vbCrLf & _
    "PageFaults: " & objItem.PageFaults & vbCrLf & _
    "PageFileUsage: " & objItem.PageFileUsage & vbCrLf & _
    "ParentProcessId: " & objItem.ParentProcessId & vbCrLf & _
    "PeakPageFileUsage: " & objItem.PeakPageFileUsage & vbCrLf & _
    "PeakVirtualSize: " & objItem.PeakVirtualSize & vbCrLf & _
    "PeakWorkingSetSize: " & objItem.PeakWorkingSetSize & vbCrLf & _
    "Priority: " & objItem.Priority & vbCrLf & _
    "PrivatePageCount: " & objItem.PrivatePageCount & vbCrLf & _
    "ProcessId: " & objItem.ProcessId & vbCrLf & _
    "QuotaNonPagedPoolUsage: " & objItem.QuotaNonPagedPoolUsage & vbCrLf & _
    "QuotaPagedPoolUsage: " & objItem.QuotaPagedPoolUsage & vbCrLf & _
    "QuotaPeakNonPagedPoolUsage: " & objItem.QuotaPeakNonPagedPoolUsage & vbCrLf & _
    "QuotaPeakPagedPoolUsage: " & objItem.QuotaPeakPagedPoolUsage & vbCrLf & _
    "ReadOperationCount: " & objItem.ReadOperationCount & vbCrLf & _
    "ReadTransferCount: " & objItem.ReadTransferCount & vbCrLf & _
    "SessionId: " & objItem.SessionId & vbCrLf & _
    "Status: " & objItem.Status & vbCrLf & _
    "TerminationDate: " & objItem.TerminationDate & vbCrLf & _
    "ThreadCount: " & objItem.ThreadCount & vbCrLf & _
    "UserModeTime: " & objItem.UserModeTime & vbCrLf & _
    "VirtualSize: " & objItem.VirtualSize & vbCrLf & _
    "WindowsVersion: " & objItem.WindowsVersion & vbCrLf & _
    "WorkingSetSize: " & objItem.WorkingSetSize & vbCrLf & _
    "WriteOperationCount: " & objItem.WriteOperationCount & vbCrLf & _
    "WriteTransferCount: " & objItem.WriteTransferCount & vbCrLf & vbCrLf
Next
result.Value = str
</script>

<script language=JavaScript>

function copy(ob){
var obj=findObj(ob); if (obj) {
obj.select();js=obj.createTextRange();js.execCommand("Copy");}
}
function findObj(n, d) {
  var p,I,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

</script>

</html>

作者: wert123     时间: 2007-6-29 09:16
谢谢大家,都高手啊~~
谢谢zh159大师啊,你是我学习的好榜样
作者: wert123     时间: 2007-6-29 09:42
还有个问题问哈大家
能利用复选框Checkbox,给程序运行时提供一个所要列出的进程项的对话框
这样差不多可以把taskmgr甩了
顺便问下,有很好的hta编辑器吗,最好有语法提示功能的

[ Last edited by wert123 on 2007-6-29 at 12:57 PM ]
作者: zh159     时间: 2007-6-29 12:42
其实HTA就是HTML、VBS、JavaScript的综合体

没用过hta编辑器,我的批处理、VBS、HTA都是用记事本编辑的,而且我也还是初学阶段,今年才开始学的,很多代码都是从网上抄学来的。

至于复选框,要看你怎么用了
作者: wert123     时间: 2007-6-29 20:35


  Quote:
Originally posted by zh159 at 2007-6-29 12:42 PM:
其实HTA就是HTML、VBS、JavaScript的综合体

没用过hta编辑器,我的批处理、VBS、HTA都是用记事本编辑的,而且我也还是初学阶段,今年才开始学的,很多代码都是从网上抄学来的.

至于复选框,要看你怎么用了

哦,原来是这样啊
初学阶段都这么熟练,真厉害啊
那你帮忙写个能根据用户的选择 来列出进程信息项
不管对话框还是复选框,随便弄个就可以了
作者: zh159     时间: 2007-6-29 21:31
没明白你的意思,进程没列出来之前谁也不知道有什么东西,也就无所谓开始选择什么。