Как получить хэндл контрола, на котором находится фокус
07.11.2024 | Категория: Образ мышления: Assembler | Автор: ManHunter
Очередная мелкая развлекалочка на Ассемблере. Задача: узнать хэндл контрола в чужом окне, на котором в данный момент находится фокус. С получением активного окна проблем быть не должно, для этого достаточно вызвать функцию GetForegroundWindow. А дальше можно воспользоваться следующим кодом.Code (Assembler) : Убрать нумерацию
- ; Получить ID текущего потока
- invoke GetCurrentThreadId
- mov [current],eax
- ; Получить хэндл активного окна
- invoke GetForegroundWindow
- ; Получить ID потока чужого окна
- invoke GetWindowThreadProcessId,eax,tmp
- mov [remote],eax
- ; Подключиться к обработке ввода данных
- invoke AttachThreadInput,[remote],[current],TRUE
- or eax,eax
- jz .processed
- ; Получить хэндл активного контрола
- invoke GetFocus
- or eax,eax
- jz @f
- ; EAX -> хэндл активного контрола
- @@:
- ; Отключиться от обработки ввода данных
- invoke AttachThreadInput,[remote],[current],FALSE
Читать статью целиком »
Просмотров: 162 | Комментариев: 0