如何在另一个应用程序中选择并突出显示窗口

How to select and highlight a window in another application?

本文关键字:显示 窗口 选择 另一个 应用程序      更新时间:2023-10-16

我想把C++程序中的一些击键发送到另一个窗口中。

出于这个原因,我希望用户选择目标窗口,类似于Visual Studio附带的Spy++实用程序中的操作方式(将十字光标拖动到目标窗口上,并用框架高亮显示目标窗口)。

如何在Windows中进行拖动和选择?我完全不知道从哪里开始寻找实现此功能的机制。

以下是通常的操作方式:

  1. 使用SetCapture捕获鼠标。这将导致所有鼠标消息被路由到应用程序的窗口
  2. 处理WM_MOUSEMOVE消息。在处理程序代码中,使用WindowFromPoint抓取鼠标下方的窗口。这将获得鼠标当前所在窗口的HWND
  3. 现在您已经有了窗口,您需要一个设备上下文(HDC)。您可以使用GetWindowDC为指定的窗口获取一个
  4. 现在,您可以使用典型的GDI函数绘制DC

有一些事情你必须注意——干净地擦除选择矩形等等,但这是一种方法

您也可以在屏幕上绘制DC来完成此操作,但在任何情况下,您都需要窗口句柄才能获得窗口矩形。

如果你在谷歌上搜索Spy++源代码,你会看到一些这种技术的例子。

Formers的答案是错误的。

Spy++源代码已经在G.Groups上提供了多年(主要参见Win32 api ngnews://194.177.96.26/comp.os.ms-windows.programmer.win32)