Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > sendmessage отправить клик окну


Автор: sa1o 15.8.2010, 00:40
помогите плз с проблемкой:

пытаюсь отправить sendmessage google chrome хочется там на кнопочку программно нажать, но не получается)

в общем spy++ при нажатии вручную говорит:
Код

<00001> 0035012C S .........WM_PARENTNOTIFY fwEvent:WM_LBUTTONDOWN xPos:1 yPos:1       message=0210 wParam=00000201 lParam=006304C3
<00002> 0035012C R .........WM_PARENTNOTIFY


отправляю программно: 
Код

SendMessage ((HWND)0x0035012C, WM_LBUTTONDOWN, 0x00000210, MAKELONG(1,1));


ничего конечно не происходит но spy++ мне отвечает:
Код

<00001> 0035012C S ........WM_LBUTTONDOWN fwKeys:MK_MBUTTON | 0200 xPos: 1 yPos: 1      message=0201 wParam=00000210 lParam=006304C9
<00002> 0035012C R ........WM_LBUTTONDOWN


помогите чего не так) 

Автор: xvr 16.8.2010, 08:43
Код

SendMessage ((HWND)0x0035012C, WM_PARENTNOTIFY, WM_LBUTTONDOWN, MAKELONG(1,1));


Автор: sa1o 16.8.2010, 14:30
попробовал spy++ грит что вроде как собщение послано, но в самом хроме никакой реакции

Автор: Abyx 16.8.2010, 14:53
юзайте PostMessage

Добавлено через 44 секунды
алсо 99% что вы шлете не тому окну

Автор: Sahab 16.8.2011, 19:35
Реанимирую тему, т.к. вопрос аналогичный...

Отправляю Send'ом и Post'ом сигналы (хоткеи), Spy++ показывает аналогично, что и при "ручном" нажатии.
Но эффекта нет. 

ЧЯДНТ? 

спс.

Автор: spyswamp 17.8.2011, 14:29
Sahab, код не запостил.

Автор: Sahab 18.8.2011, 22:21
Хендл окна __hwnd точно тот что нужен (я так думаю), так как spy++ отображает мои программные посылы

Если смотреть что выдает spy++ - то это только отжатие клавиши, делаю так:
Код

UINT lparam_A2 = 1 << 31 | 1 << 30 | ::MapVirtualKey((int)'P', 0) << 16 | 1;
PostMessage(__hwnd, WM_KEYUP, (int)'P', lparam_A2);

судя по тому что вижу в spy++ сообщения аналогичные "ручному набору с клавы".

Потом пробовал посылать нажатие и отжатие:
Код

UINT lparam_A1 = ::MapVirtualKey((int)'A', 0) << 16 | 1 ;
UINT lparam_A2 = 1 << 31 | 1 << 30 | ::MapVirtualKey((int)'P', 0) << 16 | 1 ;
PostMessage(__hwnd, WM_KEYDOWN, (int)'P', lparam_A1);
PostMessage(__hwnd, WM_KEYUP, (int)'P', lparam_A2);


Эффекта никакого от моих сообщений


спс

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)