Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.46 MB
Время: 0.003 c
15-1275375624
12
2010-06-01 11:00
2010.09.05
Хочу странного - вертикальный dbgrid. Есть такой?


2-1276080161
Анна
2010-06-09 14:42
2010.09.05
DataSet и передача параметров (MySQL5.1)


2-1276082458
Delphist2
2010-06-09 15:20
2010.09.05
workbooks в excel


2-1276076418
user_online
2010-06-09 13:40
2010.09.05
Как зафиксировать данные в поле Edit


2-1276061538
Delphist2
2010-06-09 09:32
2010.09.05
работа с excel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский