|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Сен 28, 2004 09:52:40 Допустим у меня работает некое приложение. Могу ли я из другой программы посылать сообщения которые бы имитировали действия пользователя ? Нажимали на кнопки приложения,заполняли текстовые поля, выбирали значения из радиобутоннов и т.д. Интересны примеры кода для XP, W2K. |
|
|
Дата: Сен 28, 2004 10:03:12 Можешь == RTFM |
|
|
Дата: Сен 28, 2004 11:42:53 Можно посылать сообщения из другого приложения (но не все они будут обрабатываться). сначала тебе нужно найти хэндл окна (или утилитой типа spyxx, или через FindWindow - в зависимости от задачи), a далее - например, если это диалог и известен ид кнопки - посылаешь окну с этим хэндлом типа SendDlgItemMessage,hWnd,but_id,BM_CLICK,0,0 - и наблюдаешь эффект ;) также можно и тексты в эдиты вписывать, и т.п. если это чужое приложение, ид можно выяснить той же spyxx. |
|
|
Дата: Сен 28, 2004 16:25:22 asmlamo: Допустим у меня работает некое приложение. Могу ли я из другой программы посылать сообщения которые бы имитировали действия пользователя ? Можно конечно. По крайней мере, я такое уже написал. Обычно это делается сообщениями Windows BM_CLICK и WM_SETTEXT (на самом деле полезных для автоматизации сообщений несколько больше), если номер не проходит - эмулируешь работу с клавиатурой (keybd_event вроде бы) и мышью. |
|
|
Дата: Сен 28, 2004 18:32:59 Вот совсем примитивный пример. Когда-то один чел на работе очень любил в пасьянс-косынку играть, написал такую вот фигню, что бы его отучить: .386 .model flat, stdcall option casemap :none szText MACRO Name, Text:VARARG .data Name db Text,0 .code ENDM MsgBox MACRO HWnd, Message, MB_Title, uStyle local t1, t2 szText t1, Message szText t2, MB_Title invoke MessageBox, HWnd, ADDR t1, ADDR t2, uStyle ENDM .data TreadID dd 0 TargetClass db "Solitaire",0 .code ;this does some fun Play proc TargetHandle:DWORD mov ebx, 3 Rep1: invoke Sleep, 1000*10 invoke PostMessage, TargetHandle, WM_COMMAND, 1000, 0 dec ebx jnz Rep1 invoke ShowWindow, TargetHandle,SW_MAXIMIZE MsgBox TargetHandle, "Матрица следит за тобой!", "The Matrix", MB_APPLMODAL or MB_ICONEXCLAMATION invoke ShowWindow, TargetHandle,SW_NORMAL invoke Sleep, 1000*10 Rep3: mov ebx, 10 Rep2: invoke Sleep, 1000*1 ; invoke ShowWindow, TargetHandle,SW_HIDE invoke PostMessage, TargetHandle, WM_COMMAND, 1000, 0 ; invoke Sleep, 1000*1 ; invoke ShowWindow, TargetHandle,SW_SHOW dec ebx jnz Rep2 MsgBox TargetHandle, "Повторим?", "ГЫ-ГЫ-ГЫ!!!", MB_APPLMODAL or MB_ICONQUESTION or MB_RETRYCANCEL cmp eax, IDRETRY je Rep3 invoke PostMessage, TargetHandle, WM_QUIT, 0, 0 ; close window invoke ExitThread,eax ret Play endp ;proc runs from here start: mov ebx, 1 Find: invoke Sleep, 1000*5 invoke FindWindow, ADDR TargetClass, 0 or eax, eax je Find ; target window not found mov ecx, ebx TestFound: cmp [esp+ecx*4-4], eax ; now look is it already found window? je Find ; stop! no need to play twice dec ecx jnz TestFound push eax ; for future use invoke CreateThread, 0, 0, Play, eax, 0, ADDR TreadID inc ebx jmp Find ; wait for next one end start ЗЫ Вскоре он уволился.. |
|
|
Дата: Сен 29, 2004 09:38:29 Спасибо .... Надеюсь после того как я откомпилирую эту прогу меня не уволят ! :))) |
|
|
Дата: Окт 3, 2004 14:22:35 Если хочешь поглубже в этом разобраться, то есть такая программка girder называется, в основном я ее использую для пульта, в ней такие навороты по этому поводу. Раньше она была бесплатная, и где-то проскакивали даже исходники, а теперь денег хотят вот их новый сайт: http://www.promixis.com Там много кто плагины делает на смежные темы. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.089 |