Как выбрать и выделить окно в другом приложении? - PullRequest
1 голос
/ 23 октября 2008

Я хотел бы отправить несколько нажатий клавиш из программы на C ++ в другое окно.

По этой причине я хотел бы, чтобы пользователь выбирал целевое окно, аналогично тому, как это делается в утилите Spy ++, поставляемой с Visual Studio (перетащите курсор перекрестия на целевое окно и выделите целевое окно рамкой).

Как осуществляется перетаскивание и выбор в Windows? Я совершенно заблудился относительно того, где я мог бы начать искать механизм для реализации этой функции.

Ответы [ 2 ]

2 голосов
/ 23 октября 2008

Вот как это обычно делается:

  1. Захват мыши с помощью SetCapture . Это приведет к тому, что все сообщения мыши будут направлены в окно вашего приложения.
  2. Обработка сообщения WM_MOUSEMOVE . В коде вашего обработчика возьмите окно под мышью, используя WindowFromPoint . Это даст вам HWND окна, над которым в данный момент находится мышь.
  3. Теперь, когда у вас есть окно, вам нужен контекст устройства (HDC). Вы можете получить его, используя GetWindowDC для указанного окна.
  4. Теперь вы можете подключать к DC, используя типичные функции GDI.

Есть некоторые вещи, на которые вы должны обратить внимание - чистое стирание прямоугольника выбора и т. Д., Но это один из способов сделать это.

Вы также можете сделать это на экране DC, но в любом случае вам понадобится дескриптор окна, чтобы получить окно прямоугольным.

Если вы будете гуглить вокруг исходного кода Spy ++, вы увидите несколько примеров этой техники.

0 голосов
/ 23 октября 2008

Прежние ответы неверны.

Исходный код Spy ++ был предоставлен на G. Groups в течение многих лет (см. Главным образом новости Win32: //194.177.96.26/comp.os.ms-windows.programmer.win32)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...