提问人:brushymilbil 提问时间:11/8/2023 最后编辑:Palle Duebrushymilbil 更新时间:11/8/2023 访问量:39
如何创建一个 SQL 查询,该查询返回具有可视化表示的进程?
How do I create an SQL query which returns processes with visual representation?
问:
我想创建一个查询,该查询通过可视化表示获取所有活动进程。 活动部分已经完成,但我仍然对视觉表示感到困惑。 它使用 Managementobject 的 ID 查找进程,然后检查 MainWindowHandle 是否不是 intptr。零(无视觉表示)。
像这样的东西:
ManagmentObjectSearcher search = new("SELECT * FROM Win32_Process" +
"WHERE ExecutionState < 4 OR ExecutionState = 9");
ManagementObjectCollection collection = search.Get();
foreach (ManagementObject obj in collection.Cast<ManagementObject>())
{
bool succes = int.TryParse(obj["ProcessId"].ToString(),out int Id);
if (!succes) continue;
Process process = Process.GetProcessById(Id);
if (process.MainWindowHandle == intptr.zero) continue;
//Rest of code to handle processes with visual representation...
}
现在我想知道,为了减少迭代次数,我们是否可以在查询中添加一个检查,以检查它是否具有可视化表示形式? 喜欢这个:
SELECT * FROM Win32_Process
WHERE (ExecutionState < 4 OR ExecutionState = 9) AND MainWindowHandle IS NOT NULL
但我不确定您是否需要使用数字来代替:
SELECT * FROM Win32_Process
WHERE (ExecutionState < 4 OR ExecutionState = 9) AND NOT MainWindowHandle = 0
我查看了文档,我什至没有找到 MainWindowHandle 属性,所以现在我想知道我是否可以使用它。
我尝试寻找其他资源,希望有人会提到“MainWindowHandle”,但没有。
答: 暂无答案
上一个:如何突出显示重复的列?
评论
System.Diagnostics.Process
Process process = Process.GetProcessById(Id); if (process.MainWindowHandle == intptr.Zero) continue;
SELECT * FROM Win32_Process WHERE ExecutionState = 1 OR ExecutionState = 2