Как вернуть дескриптор окна, когда мы нажимаем на него, без каких-либо DLL-инъекций? - PullRequest
1 голос
/ 03 мая 2010

Для одного из моих проектов мне нужно создать функцию, которая будет возвращать дескриптор окна, когда пользователь щелкает по нему (любое окно, отображаемое на экране и в любом месте внутри этого окна).Я знаю, что можно использовать глобальный хук, но я думаю, что должен быть более простой способ сделать это, не используя DLL-инъекцию.

На самом деле, я мог бы перехватить щелчок левой кнопкой мыши или перехватить, когдаокно активировано.Могу ли я использовать одно из этих 2 решений без внедрения DLL?

Ответы [ 2 ]

2 голосов
/ 03 мая 2010

Звоните SetCapture. Когда вы сделаете это, все последующие события мыши перейдут в ваше собственное окно. Когда вы получаете событие щелчка, позвоните ReleaseCapture, а затем WindowFromPoint, чтобы узнать, какое окно находится в точке, где вы получили событие щелчка. Координаты, которые вы получаете в событии щелчка, будут относиться к окну, которое вы передали SetCapture, чтобы не забыть сначала преобразовать их в экранные координаты. Используйте ClientToScreen.

2 голосов
/ 03 мая 2010

Вы можете использовать LowLevelMouseProc для перехвата щелчка, а затем использовать WindowFromPoint для определения окна. (Я на самом деле не пробовал это.)

...