Всем привет!
Пытаюсь манипулировать поведением чужого приложения (т.е. имитация действий пользователя). Для этого нахожу нужные объекты посредством FindWindow, а получив handle соответствующего окна - посылаю ему сообщения SendMessage - WM_CLOSE, WM_LBUTTONDOWN и т.д.
Здесь все без особых проблем.
Но! В одном месте необходимо использовать щелчок правой кнопкой мыши, при этом появляется всплывающее окно (popup) ему тоже послать "щелчок".
Последее действие сейчас делаю посредством:
PostMessage(hWnd, 0x000001ed, 0, 0);
PostMessage(hWnd, 0x000001ef, 0, 0);
- это некие недокументированные Майкрософтом сообщения, вычислил их через Winspector Spy.
Все хорошо, popup (всплывающее окно) сообщение получает, закрывается, отрабатывает нужную команду.
Теперь о проблеме - если все это происходит, когда комп "залочен" (нажатием Ctrl+Alt+Del), то сообщение до всплывающего окна не доходят! То есть само окно возникает (мне его конечно при этом не видно, но если записывать события в какой-нибудь протокол, то вижу, что нужное мне окно было создано!), но данное сообщение ("выбрать пункт меню во всплывающем окне")очевидно не доходит (или вообще не посылается), т.к. нет результата отработанной команды, как бывает в тех случаях, когда комп не залочен...
Никто не сталкивался? Как лечить, куда податься?
Сообщения в этом режиме не блокируются - остальное работает как положено, проблема только с popup'ом...
Если имитировать те же действия посылкой последовательности псевдо-действий "нажать кнопку ВНИЗ, нажать ВВОД" - то же самое - работает как надо только при незалоченном компе.
Спасибо за чтение и комментарии!
Илья