我想查看外部应用程序的窗口(扑克在线游戏桌)何时跳过所有其他窗口,因为轮到我玩了。
问题是Game表跳转到前台......但是窗口不会成为活动状态......这意味着我无法通过API GetForegroundWindow检查它是否被所有其他可见窗口跳过(并且在fatc中,此API继续返回上一个窗口的句柄,如果它在游戏桌上跳过所有桌面窗口)。此外,GetTopWindow API无效。
现在的问题是:如果它没有激活,如何找到顶部VISIBLE窗口的句柄(在我眼睛的所有其他打开的窗口上方的窗口)???
不,窗口不是TopMost窗口:事实上,如果我点击另一个窗口,它就会进入后台。如果它应该是TopMost窗口,它将保持在顶部。
可能它是由WM_SHOW或WM_NOACTIVATE标志放在前台。
答案 0 :(得分:2)
EnumWindows
以及可能的WindowFromPoint
API函数。您可以在VB.NET应用程序中通过P / Invoke使用它们,并且能够以自上而下的顺序(EnumWindows)查找窗口,检查它们的位置,标题等,以确定您感兴趣的窗口,或直接找到某个位置的窗口(WindowFromPoint;我认为您感兴趣的窗口可能会弹出屏幕中央,或者您已经知道的另一个窗口居中,或者您可以通过其标题轻松找到它 - 这样您就知道了对屏幕的兴趣已经过了。)
答案 1 :(得分:1)
听起来应用可能正在使用SetWindowPos(..., HWND_TOPMOST, ...)
成为最顶层的窗口。以这种方式定位的Windows不必处于活动状态即可显示在顶部。
在这种情况下,您可以尝试使用GetWindow(..., GW_HWNDFIRST)
在窗口管理器的z顺序中找到最顶层的窗口。有关执行此操作的简短代码段,请参阅http://support.microsoft.com/kb/126386。
答案 2 :(得分:0)
扑克应用程序必须使用Win32 API,例如SetForegroundWindow(hWnd)
,以便在轮到你时将窗口置于顶部。
要检测此类通话,您可以使用Windbg Script Tracing API calls
您可以使用它来查看应用程序正在使用的API Windbg屏幕不使用其他工具。如果您需要更多细节 从API中,只需执行LogViewer.exe并打开.lgv文件即可 在您使用此脚本时自动创建。
输出文件,扩展名为.LGV。
LogViewer.exe是Windows调试工具的一部分。它位于您安装Windbg的同一位置。使用LogViewer.exe打开.LGV文件:
API_TRACING.TXT的源代码:
$$
$$ =============================================================================
$$ Trace APIs during the Debugging Session.
$$ Creates a log on Desktop and Windbg window.
$$ To see the more verbose log run logviewer.exe from Debugging Tools for Windows
$$ and open the file that has the .lgv extension.
$$ This file is inside LogExts on your desktop.
$$
$$ Compatibility: Win32, should work on Win64.
$$
$$ Usage: $$>< to run the program.
$$
$$ Roberto Alexis Farah
$$ Blog: blogs.msdn.com/debuggingtoolbox/
$$
$$ All my scripts are provided "AS IS" with no warranties, and confer no rights.
$$ =============================================================================
$$
!logexts.loge
!logexts.logc e *
!logexts.logo e v
!logexts.logb p
$$
$$ ====================================
$$ Logging is enabled for this process.
$$ ====================================
获得所有这些信息之后,您将知道要从特定呼叫者/ DLL /等处寻找什么API呼叫以及这是您轮到您的时间,扑克窗口是在顶部和您可以将此知识库文章用于Find the Handle of the TopMost Window