Форум: "Начинающим";
Текущий архив: 2010.09.05;
Скачать: [xml.tar.bz2];
ВнизКак определить, что приложение освободилось? Найти похожие ветки
← →
И. Павел © (2010-06-08 13:17) [0]Здравствуйте.
Моя программа должна управлять другим приложением, посылая ему сообщения.
Например, мне нужно нажать на кнопку (HBut) в чужом приложении (точнее это какая-то панель, т.е. класс не button). После этого изменится текст в окне HTxt (хотя он может и остаться прежним). На основании нового текста моя программа решает: стоит ли нажать на кнопку второй раз (это утрировано, но суть примерно в этом).
SendMessage(HBut, WM_LBUTTONDOWN, 0, 0);
SendMessage(HBut, WM_LBUTTONUP, 0, 0);
SendMessage(HTxt, WM_GETTEXT, WParam(StrBufSize(s)), LParam(s));
//что сюда написать – не знаю
if s = ‘12345’ then
begin
SendMessage(HBut, WM_LBUTTONDOWN, 0, 0);
SendMessage(HBut, WM_LBUTTONUP, 0, 0);
end;
Возникшая у меня проблема заключается в том, что текст в HTxt не успевает поменяться между нажатием и WM_GetText.
У меня была идея – отлавливать через хуки сообщение Idle для чужой программы. Но в этом случае нельзя будет сказать – связано сообщение с завершением обработки нажатия на кнопку или с более ранними действиями.
Подскажите, пожалуйста, как решить эту проблему? Можно ли в этом случае как-то использовать Idle (и как), или что-то другое? Можно ли что-нибудь написать перед if, чтобы дождаться обработки нажатия на кнопку?
Заранее спасибо.
← →
RWolf © (2010-06-08 13:19) [1]WaitForInputIdle?
← →
И. Павел © (2010-06-08 13:29) [2]> RWolf © (08.06.10 13:19)
Огромное вам спасибо! :)
← →
Leonid Troyanovsky © (2010-06-08 13:29) [3]
> И. Павел © (08.06.10 13:17)
> Подскажите, пожалуйста, как решить эту проблему? Можно ли
> в этом случае как-то использовать Idle (и как), или что-
> то другое?
Хук на подопытный поток обязателен (я уж ранее говорил).
Хотя бы для уведомлений о разрушении нужных окон.
Хуков можно установить несколько, в т.ч. WH_FOREGROUNDIDLE.
В рассматриваемом случае можно следить (WH_CALLWNDPROC*)
за WM_СOMMAND with EN_CHANGE | EN_UPDATE, посылаемыми
паренту этого эдита, если это, конечно, эдит.
--
Regards, LVT.
← →
Leonid Troyanovsky © (2010-06-08 13:34) [4]
> И. Павел © (08.06.10 13:17)
> SendMessage(HBut, WM_LBUTTONDOWN, 0, 0);
Лучше слать BM_CLICK или WM_COMMAND паренту,
с идентификатором кнопки.
--
Regards, LVT.
← →
И. Павел © (2010-06-08 13:40) [5]> Хук на подопытный поток обязателен (я уж ранее говорил).
> Хотя бы для уведомлений о разрушении нужных окон.
Окна вряд ли будут закрываться просто так, т.к. программа будет работать на единственной машине, и возможно даже без пользователя.
Но я на всякий случай сделаю отлов Destroy, спасибо.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.09.05;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c