Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 260

/ вопрос решён /

Здравствуйте, эксперты!
Мне необходимо программно:
1) Кликнуть на кнопку "Save result" чужого приложения.
2) В открывшемся диалоговом окне - в поле Едита Комбобокса, вставить текст "01".
3) кликнуть на кнопку "Save".

Все работает до появления Диалогового окна, на этом моя программа чего то ждет (в подвисшем состоянии-текст не вводит). При закрытии Диалогового окна в ручную, моя программа продолжает работать как и прежде, но только опять же до этого Диалогового окна.

Приложение:
  1. <code language="Delphi">
  2. procedure TForm1.Button1Click(Sender: TObject);
  3. var
  4. H,H2: THandle;
  5. H1,H3,H4: HWND;
  6. begin
  7.  
  8. if H<>0 then
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16. end;
  17. </code>


BarsDG Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: BarsDG (статус: Посетитель)
Вопрос отправлен: 13 сентября 2012, 14:36
Состояние вопроса: решён, ответов: 0.


Мини-форум вопроса

Всего сообщений: 12; последнее сообщение — 13 сентября 2012, 17:10; участников в обсуждении: 3.
min@y™

min@y™ (статус: Доктор наук), 13 сентября 2012, 14:47 [#1]:

А что делает чужое приложение?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
BarsDG

BarsDG (статус: Посетитель), 13 сентября 2012, 14:56 [#2]:

Это программа для USB микроскопа (по сути web камера)
Кнопка "Save Result" выполняет функцию сохранения картинки.
DNK

DNK (статус: Студент), 13 сентября 2012, 15:06 [#3]:

Поди ж ты то и есть. SendMessage вернет результат только после того как код, вызванный кнопкой, отработает, т.е. когда отработает модальное диалоговое окно. Используй PostMessage.
"Digital Networked Knight"
min@y™

min@y™ (статус: Доктор наук), 13 сентября 2012, 15:07 [#4]:

Понятно. А зачем понадобилось программно управлять этой программой? Мимо неё никак нельзя получать данные с микроскопа?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
DNK

DNK (статус: Студент), 13 сентября 2012, 15:11 [#5]:

min@y™: Погляди вопрос 6258.
"Digital Networked Knight"
min@y™

min@y™ (статус: Доктор наук), 13 сентября 2012, 15:15 [#6]:

Цитата (DNK):

Погляди вопрос 6258.

Влом. Настроения нету. Отпуск кончился...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
BarsDG

BarsDG (статус: Посетитель), 13 сентября 2012, 15:57 [#7]:

DNK:
Спасибо, через PostMessage помогло, но не могу добиться ввода текста...
min@y™

min@y™ (статус: Доктор наук), 13 сентября 2012, 16:22 [#8]:

Проверь, не равен ли хэндл Н4 значению INVALID_HANDLE_VALUE или нулю после вызова FindWondowEx().
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
DNK

DNK (статус: Студент), 13 сентября 2012, 16:26 [#9]:

Я в этих делах не силен. Могу предположить, когда работает код ввода текста, программа ещё не успела вывести диалоговое окно. Поэтому после PostMessage нужно поставить код ожидания. Либо ожидать появления окна, либо обычный sleep с достаточным значением.
"Digital Networked Knight"
BarsDG

BarsDG (статус: Посетитель), 13 сентября 2012, 16:55 [#10]:

DNK:
Примерчик на ожидание появления окна можете написать?
DNK

DNK (статус: Студент), 13 сентября 2012, 17:06 [#11]:

repeat
  sleep(200);
  H2 := findwindow(nil, 'Save image'); //находим Диалоговое окно
until H2 <> INVALID_HANDLE_VALUE;
"Digital Networked Knight"
min@y™

min@y™ (статус: Доктор наук), 13 сентября 2012, 17:10 [#12]:

Цитата (BarsDG):

Примерчик на ожидание появления окна можете написать?

По-простому:
repeat 
  H4:=FindWindowEx(H3, 0, 'Edit',0); //находим в ComboBox поле Edit
  windows.SetWindowText(H4,'123'); // Вставляем в Edit текста
until (H4 <> 0);

ЭТО ТОЛЬКО ПРИМЕР!!!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

14 сентября 2012, 10:03: Статус вопроса изменён на решённый (изменил автор вопроса — BarsDG)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 27 марта 2023, 04:50
Выполнено за 0.03 сек.
Рейтинг@Mail.ru