如何select和突出显示另一个应用程序中的窗口?

我想从C ++程序发送一些击键到另一个窗口

出于这个原因,我想让用户select目标窗口,类似于在Visual Studio附带的Spy ++实用程序中完成的目标窗口(将十字光标拖到目标窗口上并使目标窗口由框架高亮显示)。

这是如何拖拽和select在Windows中完成? 我完全失去了在哪里可能会开始寻找机制来实现此function。

以下是通常的做法:

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

有一些事情你必须注意 – 干净地擦除选择矩形等等,但这是一个方法来做到这一点。

你也可以画一个屏幕DC来做到这一点,但无论如何,你将需要窗口句柄,以获得窗口矩形。

如果你围绕Spy ++的源代码,你会看到这个技术的一些例子。

前者的答案是错误的。

Spy ++源代码已经在G组上多年了(主要参见Win32 API函数: