Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.09.30;
Скачать: [xml.tar.bz2];

Вниз

Проблемы с сообщениями Windows   Найти похожие ветки 

 
Putnik ©   (2007-09-01 10:39) [0]

Уважаемые мастера форума, я столкнулся с такой проблемой: пишу программу для автоматизации действий с некоторой программой( Хроматек Аналитик), в нее входит автоматическое открытие файла, ввод в диалоговые окна нужных значений, сохраннение файла, дело в том что после открытия первого диалогового окна которому я хотел бы послать сообщением wm_settext, ничего не происходит, а выполняются следующие команды, связанные с открытием и поиском следующего диалогового окна,  в итоге получается куча диалоговых окон до которых не доходят посылаемые сообщения.
Я полагаю что это может быть связано с тем, что сообщения главному окну "главнее" дочерних окон, может быть что диалоговые окна создаются из ресурсов, или в моем полном непонимании принципов обмена сообщения, в этом случае просветите меня, пожалуйста!
p.s. при выполнении пошагово f8 из среды разработки все выполняется как и задумывалось
p.p.s. я не программист, а химик, сильно ногами не пинать:)


 
palva ©   (2007-09-01 10:47) [1]

Ну наверно, сообщения нужно посылать не диалоговому окну, а полю ввода на этом окне.

> я не программист, а химик
О! Самогон, наркотик, гексоген.


 
Putnik ©   (2007-09-01 14:11) [2]

ya ge ne nastol"ko himik:)


 
Virgo_Style ©   (2007-09-01 18:59) [3]

Putnik ©   (01.09.07 10:39)
при выполнении пошагово f8 из среды разработки все выполняется как и задумывалось


А если между посылкой сообщений поставить sleep"ы? Быть может, диалоговое окно не успевает создаться и "его" сообщения уходят в пустоту? Конечно, окончательное решение не должно базироваться на sleep"ах, но для проверки сойдет, я думаю.


 
Putnik ©   (2007-09-02 12:32) [4]

2 Virgo_Style ©
Спасибо. Все именно из-за того, что окно не успевало создаваться.
Тогда еще вопрос. Можно вместо sleep"a использовать цикл, условием  выхода из которого, будет являтся ненулевой handle этого диалогового окна? И если можно, что должно содержаться в его теле?


 
Virgo_Style ©   (2007-09-02 12:42) [5]

Думаю, можно. А в тело цикла, чтобы систему не грузить, поставить sleep с небольшим интервалом.

Или попробовать использовать WaitForInputIdle.

Честно говоря, я не очень-то компетентен в этих вопросах)


 
{RASkov} ©   (2007-09-02 14:05) [6]

> [4] Putnik ©   (02.09.07 12:32)

while Handle=0 do Application.ProcessMessage;

например:
while FindFindow("","")=0 do Application.ProcessMessage;
Ну и придумать аварийный выход из цикла
например так:
i=0;
while (Handle=0) and (i<1000) do begin
Application.ProcessMessage;
INC(i);
end;
если Handle=0 тогда ERROR;

Но лучше воспользоваться другими способами....


 
{RASkov} ©   (2007-09-02 14:13) [7]

> условием  выхода из которого, будет являтся ненулевой handle

> что должно содержаться в его теле?

поиск этого хэндла....


 
Putnik ©   (2007-09-04 12:42) [8]

Спасибо, что приняли участие.
> [7] поиск будет содержаться в условии, а не в теле



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.09.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.043 c
15-1188367884
Человек
2007-08-29 10:11
2007.09.30
Исскуство создание компонент (Фаронов)


9-1160988348
Ford
2006-10-16 12:45
2007.09.30
Алгоритм маятника


15-1188467488
alex_***
2007-08-30 13:51
2007.09.30
Cдал экзамен ".NET Framework 2.0 - Appllication Dev. Foundation"


2-1189072125
delphiForever
2007-09-06 13:48
2007.09.30
можна ли рисовать на битмапе в TThread


15-1189014249
Layner
2007-09-05 21:44
2007.09.30
Веб статистика от некоторых профи вебмастеров





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