我目前正在使用我所有的电脑正在运行的进程
Process[] plist = Process.GetProcesses();
有什么好方法来检查列表中的哪些进程正在作为后台进程运行?
对于“后台进程”,我的意思是一个对用户不可见的进程。 我试图使用WindowHandler来检查它的位置,但是这并没有这样做,因为Windows中的进程可以在WindowHandler设置为正整数的背景下运行。
这似乎是检查窗口风格做的窍门:
public static bool hasWindowStyle(Process p) { IntPtr hnd = p.MainWindowHandle; UInt32 WS_DISABLED = 0x8000000; int GWL_STYLE = -16; bool visible = false; if (hnd != IntPtr.Zero) { UInt32 style = GetWindowLong(hnd, GWL_STYLE); visible = ((style & WS_DISABLED) != WS_DISABLED); } return visible; }
这将返回true,如果:
我已经做了一些测试,至少现在至少这似乎过滤了幕后运行的流程相当不错。
我想这只能在Windows上工作。