Посл.ответ |
Сообщение |
Ранг: 122.2 (ветеран) Активность: 0.04↘0 Статус: Участник
|
Создано: 22 января 2007 00:29 · Личное сообщение · #1
Всем привет.
Я хочу программно эмулировать клик мышкой в окне другого процесса. Думал что просто достаточно сделать
PostMessage(hWindow, WM_BUTTONDOWN, MK_LBUTTON, MakeLong(x,y));
PostMessage(hWindow, WM_BUTTONUP, MK_LBUTTON, MakeLong(x,y));
только нифига не получается так. Из Spy++ видно что окнополучает нужное событие только не реагирует на него.
В чем может быть проблема?
| Сообщение посчитали полезным: |
|
Ранг: 228.7 (наставник), 2thx Активность: 0.12↘0 Статус: Участник malware research
|
Создано: 22 января 2007 01:09 · Личное сообщение · #2
egorovshura
юзай mouse_event http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/mouseinput/mouseinputreference/mouseinputfunctions/mouse_event.asp функцию, видел такое в одном червяке
----- Research is my purpose | Сообщение посчитали полезным: |
Ранг: 22.2 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 22 января 2007 01:10 · Личное сообщение · #3
юзай SendInput
| Сообщение посчитали полезным: |
Ранг: 122.2 (ветеран) Активность: 0.04↘0 Статус: Участник
|
Создано: 22 января 2007 01:18 · Личное сообщение · #4
спасибки! mouse_event работает. SendInput не пробовал, но думаю тоже проблем не будет, они вроде похожи по описанию.
но все таки непонятно почему вариант с пост ивентом не фурычит. может кто знает.
| Сообщение посчитали полезным: |
Ранг: 36.0 (посетитель) Активность: 0.03↘0 Статус: Участник
|
Создано: 22 января 2007 01:22 · Личное сообщение · #5
egorovshura А где берём дескриптор перед окна?
Например это работает.
HWND hWnd;
hWnd=::FindWindow(NULL,"заголовок");
PostMessage( hWnd,WM_QUIT, 0, 0 );
| Сообщение посчитали полезным: |
Ранг: 122.2 (ветеран) Активность: 0.04↘0 Статус: Участник
|
Создано: 22 января 2007 02:56 · Личное сообщение · #6
atoll пишет:
Например это работает.
HWND hWnd;
hWnd=::FindWindow(NULL,"заголовок");
PostMessage( hWnd,WM_QUIT, 0, 0 );
Это работает. А Mouse Button UP/DOWN нет. видимо зависит еще от того как приложение события обрабатывает. Дескриптор беру примерно так же. Через FindWindow и FindWindowEx.
| Сообщение посчитали полезным: |
Ранг: 5.5 (гость) Активность: 0=0 Статус: Участник
|
Создано: 22 января 2007 03:30 · Поправил: Mavka · Личное сообщение · #7
<удалил>
| Сообщение посчитали полезным: |
Ранг: 200.3 (наставник) Активность: 0.09↘0 Статус: Участник
|
Создано: 22 января 2007 03:44 · Личное сообщение · #8
По-моему аутпост такое блокирует, и если вы хотите это применить в "таких" целях, то недолжно получится, а если для себя то способы есть и давно известны (гугл рулит).
----- Само плывет в pуки только то, что не тонет. | Сообщение посчитали полезным: |
Ранг: 310.8 (мудрец), 29thx Активность: 0.43↘0 Статус: Участник
|
Создано: 22 января 2007 03:55 · Личное сообщение · #9
egorovshura пишет:
Дескриптор беру примерно так же.
А кликаешь на чем. Если на контроле - значит окно берет координаты мышки не из параметров и не посылает событие контролу. Посылай на дескриптор контрола - это надежнее. Или эмулируй тщательней - с координатами.
| Сообщение посчитали полезным: |
Ранг: 20.8 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 22 января 2007 05:01 · Личное сообщение · #10
Вообще нужно в Spy++ посмотреть все сообщения, которые посылаются при реальном клике.
Когда я равлекался с клавиатурой - то необходимо было сначала установить фокус (WM_SETFOCUS), по-моему еще активизировать (WM_ACTIVATE), и потом уже слать WM_KEYDOWN и т.д.
| Сообщение посчитали полезным: |
Ранг: 122.2 (ветеран) Активность: 0.04↘0 Статус: Участник
|
Создано: 22 января 2007 08:13 · Личное сообщение · #11
Player пишет:
Вообще нужно в Spy++ посмотреть все сообщения, которые посылаются при реальном клике.
Когда я равлекался с клавиатурой - то необходимо было сначала установить фокус (WM_SETFOCUS), по-моему еще активизировать (WM_ACTIVATE), и потом уже слать WM_KEYDOWN и т.д.
Да я так и делал: смотрел какие в реальности события шлются окну и потом слал такие же. Причем даже сделал плавный подход мышки, т.е. много событий MouseMove с постепенным приращением координат, только работать не хочет все равно, в Spy++ вижу что все мои события доходят с нужными параметрами.
Видать какое-то главное событие пропустил
| Сообщение посчитали полезным: |