Использование SendMessage для симуляции кликов мыши - PullRequest
1 голос
/ 27 апреля 2009

Мне нужно использовать SendMessage для имитации пользовательских кликов в целевой программе в качестве блоков SendMessage до тех пор, пока событие, которое он вызывает, не завершит обработку. Причина этого заключается в том, что эта блокировка дает возможность обнаружить, открылись ли какие-либо диалоговые окна в результате нажатия. В настоящее время моя проблема заключается в том, что хотя я могу заставить работать щелчок, используя сообщения WM_LBUTTONDOWN и WM_LBUTTONUP последовательно на кнопке в макете, который открывает диалоговое окно модели, я не могу заставить его работать с меню и элементами меню в стандартном приложении Windows ( Блокнот). Будем благодарны за любую помощь в получении возможности выполнять щелчки по пунктам меню таким образом, чтобы это работало. Я уже могу определить, если это пункт меню, просто нужно иметь возможность имитировать щелчок по нему с блокировкой с помощью SendMessage.

Приветствия

Ross

1 Ответ

2 голосов
/ 29 апреля 2009

К сожалению, эта страница на win32 хуках говорит

Имитация ввода с клавиатуры и мыши (WH_JOURNALPLAYBACK). Крючки обеспечивают единственный надежный способ имитировать эти действия. Если вы попытаетесь смоделировать эти события, отправляя или публикуя сообщения, внутренние компоненты Windows не обновляют состояние клавиатуры или мыши, что может привести к неожиданному поведению. Если для воспроизведения событий клавиатуры или мыши используются ловушки, эти события обрабатываются точно так же, как события реальной клавиатуры или мыши.

Похоже, что для автоматического тестирования вам, возможно, придется прибегнуть к каким-либо функциям, похожим на макросъемку, используя WH_JOURNALRECORD и WH_JOURNALPLAYBACK?

...