Главная страница
    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.45 MB
Время: 0.003 c
15-1276098991
KilkennyCat
2010-06-09 19:56
2010.09.05
Наши компоненты.


2-1275945627
akosh12345
2010-06-08 01:20
2010.09.05
Удаление без рекурсии


15-1276010417
Учащийся
2010-06-08 19:20
2010.09.05
Программа для постройки Авл и Б-дерева.


6-1225280196
Андрей
2008-10-29 14:36
2010.09.05
TServerSocket/TClientSocket SendText


3-1244113042
ganda
2009-06-04 14:57
2010.09.05
Работа функцией UDF при вставки записи в Таблицу





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский