如何在另一个应用程序中选择并突出显示窗口
How to select and highlight a window in another application?
我想把C++程序中的一些击键发送到另一个窗口中。
出于这个原因,我希望用户选择目标窗口,类似于Visual Studio附带的Spy++实用程序中的操作方式(将十字光标拖动到目标窗口上,并用框架高亮显示目标窗口)。
如何在Windows中进行拖动和选择?我完全不知道从哪里开始寻找实现此功能的机制。
以下是通常的操作方式:
- 使用SetCapture捕获鼠标。这将导致所有鼠标消息被路由到应用程序的窗口
- 处理WM_MOUSEMOVE消息。在处理程序代码中,使用WindowFromPoint抓取鼠标下方的窗口。这将获得鼠标当前所在窗口的HWND
- 现在您已经有了窗口,您需要一个设备上下文(HDC)。您可以使用GetWindowDC为指定的窗口获取一个
- 现在,您可以使用典型的GDI函数绘制DC
有一些事情你必须注意——干净地擦除选择矩形等等,但这是一种方法
您也可以在屏幕上绘制DC来完成此操作,但在任何情况下,您都需要窗口句柄才能获得窗口矩形。
如果你在谷歌上搜索Spy++源代码,你会看到一些这种技术的例子。
Formers的答案是错误的。
Spy++源代码已经在G.Groups上提供了多年(主要参见Win32 api ngnews://194.177.96.26/comp.os.ms-windows.programmer.win32)
相关文章:
- 使用 while 循环时不显示窗口
- 有没有办法拿一个opencv显示窗口并将其保存到GUI窗口?
- SDL视频显示窗口:如何连接窗口关闭事件回调
- Qt:缓慢启动时显示窗口内容
- 为什么MessageBox在我创建的桌面中显示窗口,而AllocConsole在上一个桌面中显示它
- 如何显示窗口大小不同的输出图像?通过使用 cv::Mat
- QMLApplicationViewer 多个实例仅首先显示窗口
- 为什么HWND_NOTTOPMOST无法在xp中显示窗口前景
- 基本C++SFML显示窗口错误
- 使用Richedit控件时,基于对话框的Win32 API程序将不会显示窗口
- 显示窗口的极简主义Visual C++应用程序
- Win32:是否可以显示窗口,但在任务栏中隐藏它
- OpenCV-关闭图像显示窗口
- IWebBrowser2在渲染完成后显示窗口
- 防止在调用SDL_SetVideoMode后显示窗口
- 如何使用rad studio显示窗口总数
- Opencv highgui显示窗口
- 使用sfml显示窗口
- 跨平台c++库/库:显示窗口,在屏幕上渲染2D形状,在屏幕上渲染文本
- 用于创建菜单栏的c++ win32程序(程序编译并运行,也显示窗口但不显示菜单栏)