Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.30;
Скачать: CL | DM;

Вниз

Проблемы с сообщениями 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.025 c
2-1188997477
kyro
2007-09-05 17:04
2007.09.30
Почему в Firebird сбивается сортировка в индексе


15-1187885910
Kostafey
2007-08-23 20:18
2007.09.30
Развертывание Web-приложения для локальной сети


6-1169741565
Pasha L
2007-01-25 19:12
2007.09.30
послать POST-запрос с помощью TidHTTP и не дожидаться ответа


15-1188484927
lookin
2007-08-30 18:42
2007.09.30
Про пиво и клаву...


1-1184761986
Semion
2007-07-18 16:33
2007.09.30
действие MouseDown по X,Y координате