我必须完成一项任务,即找出在后台运行的进程/ exe /应用程序。 即:进程正在运行但是没有任何UI / Window可见,尽管它是一个Windows GUI应用程序。我读了EXEheader。标题包含一个名为“子系统”的字段,应用程序将在其下运行并且需要它所使用的接口类型。 但它返回Windows GUI,就是这样。但我希望teo检测该应用程序是否有任何窗口。此应用程序也不是一项服务,就好像它是一项服务,我可以轻松阅读信息。 如果你们中的任何一个人都对所说的那些内容有所了解,我将很高兴。
温馨的问候.. Sarfu
答案 0 :(得分:3)
如果我正确理解您的问题,您想知道正在运行的应用程序是否有任何可见的窗口。
为此,您可以致电EnumWindows
以获取所有顶级窗口。对于每个窗口,请调用GetWindowThreadProcessId
以获取进程ID,并调用GetWindowLong(hwnd, GWL_STYLE)
以获取窗口样式。测试WS_VISIBLE
的样式以查看窗口是否可见。浏览所有窗口,查看您的进程是否拥有可见的窗口。如果您没有进程ID,可以使用EnumProcesses
获取所有进程ID。
答案 1 :(得分:0)
“subssytem”GUI不会告诉您应用程序有窗口。事实上,相反的是更接近事实。控制台应用程序获取控制台窗口。 GUI应用程序负责创建自己的窗口,如果需要它们。未调用CreateWindow()
的GUI进程将没有任何窗口。
显然,您确实知道您正在寻找的可执行文件。在这种情况下,请致电EnumProcesses()
以查找所有流程,并为每个流程调用EnumProcessModules()
。在Windows上,“模块”是DLL和EXE。每个进程都只有一个EXE模块。因此,如果任何进程的一个EXE模块是您正在查找的可执行文件,那么您的应用程序正在运行。