如何从任务管理器中获取特定程序

如何从任务管理器中获取特定程序

我想使用批处理脚本命令获取使用 GDI 对象 157 运行的进程,但无法做到这一点,我的脚本是 tasklist /fi "gdiobject eq 157"

答案1

读取全文tasklist /?:列出了所有允许的过滤器(11目前仅有过滤器名称)。

此外,您无法检索Windows 任务管理器GDI Objects专栏使用命令行实用程序tasklist.exe或 powershell cmdlet Get-Process。您需要使用以下方法计算GetGuiResources功能

检索指定进程正在使用的图形用户界面 (GUI) 对象的句柄数。

幸运的是,有一种方法可以在 Windows PowerShell 中调用本机 Windows API:Add-Type命令.dll可以使用平台调用 (P/Invoke) 机制从 Windows PowerShell调用库中的函数。

例如,示例 5:调用本机 Windows API足以证明这一点,可以编写以下简单的脚本:

# GDI objects: get number of GDI handles per process

Add-Type -Name NativeMethods -Namespace Win32 -MemberDefinition @'
[DllImport("User32.dll")]
public static extern int GetGuiResources(IntPtr hProcess, int uiFlags);
'@

$allProcesses = [System.Diagnostics.Process]::GetProcesses() #or# Get-Process
$auxCountHandles = [int]0
$auxCountProcess = [int]0
$GuiResources = @()
ForEach ($p in $allProcesses) {
        if ( [string]::IsNullOrEmpty( $p.Handle)) { continue }
        $auxCountProcess += 1
        $auxGdiHandles = [Win32.NativeMethods]::GetGuiResources($p.Handle, 0)
        If ($auxGdiHandles -eq 0)                    { continue }
        $auxCountHandles += $auxGdiHandles
        $auxDict = [ordered]@{
            PID         = $p.Id
            Handles     = $auxGdiHandles
            ProcessName = $p.Name
        }
        $GuiResources += [PSCustomObject]$auxDict
}

$GuiResources  #| Sort-Object "ProcessName" #| Format-Table -AutoSize

<##> 
    ### summary debugging output ###
Write-Host $('{0} processes; {1}/{2} with/without GDI objects' -f $allProcesses.Count,
    $GuiResources.Count,
    ($allProcesses.Count - $GuiResources.Count))
Write-Host "Total number of GDI handles: $auxCountHandles`n"
<##>

示例输出(截断):

PS C:\WINDOWS\system32> D:\PShell\tests\GdiObjectCounter.ps1

161 processes; 27/134 with/without GDI objects
Total number of GDI handles: 2642

  PID Handles ProcessName         
  --- ------- -----------         
  712      16 SettingSyncHost     
  744       6 winlogon            
 7524       7 ShellExperienceHost 
 3852      36 RuntimeBroker       
 3696      74 chrome              

相关内容