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

Вниз

Как запустить приложение из программы и не зависить от него   Найти похожие ветки 

 
Zhen73 ©   (2010-09-03 18:50) [0]

Запускаю exe-файл из программы:

ShellExecute(0, nil, filename, nil, nil, SW_SHOW);

Exe-шник запускается, работает, все OK. Но когда в Exe-шник выскакивает диалоговое окно с "предупреждением", то я теряю доступ к своей программе, пока не закрою это диалоговое окно.

Как сделать так что-бы программа и Exe-шник не имели ничего общего?


 
DVM ©   (2010-09-03 19:25) [1]


> Как сделать так что-бы программа и Exe-шник не имели ничего
> общего?

Если окно чужой программы захочет выскочить на передний план, оно это сделает, и ты ему не помешаешь. И дело тут не в какой то мистической связи.


 
Германн ©   (2010-09-04 02:05) [2]


> Если окно чужой программы захочет выскочить на передний
> план

Вот интересно что это за "диалоговое окно с предупреждением" если это предупреждение само по себе не важно автору?


 
Anatoly Podgoretsky ©   (2010-09-04 09:47) [3]

> Германн  (04.09.2010 02:05:02)  [2]

И чем программа отличается от приложения.


 
Zhen73 ©   (2010-09-06 11:03) [4]

"Диалоговое окно с предупреждением" : class #32770 (Dialog)
При этом, доступ к другим программам не блокируется, только к основной программе, которая запустила exe-шник


 
Zhen73 ©   (2010-09-06 11:03) [5]

может поскажите, каким механизмом попробовать запустить exe-шник?


 
Leonid Troyanovsky ©   (2010-09-06 12:03) [6]


> Zhen73 ©   (06.09.10 11:03) [4]
> "Диалоговое окно с предупреждением" : class #32770 (Dialog)

Скопируй (^C) сюда этот диалог.
Только раскладку на рус. переключай.

--
Regards, LVT.


 
12 ©   (2010-09-06 12:19) [7]

http://www.google.ru/webhp?rls=ig#rls=ig&hl=ru&source=hp&q=createprocess+delphi&aq=2&aqi=g10&aql=&oq=%D0%A1%D0%BA%D1%83%D1%84%D0%B5%D1%83%D0%97%D0%BA%D1%89%D1%81%D1%83&gs_rfai=&fp=14b27f5f90d8e372


 
DVM ©   (2010-09-06 12:43) [8]


> Скопируй (^C) сюда этот диалог.

У него там окно с исключением вероятно :)


 
Zhen73 ©   (2010-09-06 13:01) [9]

Вообщем, основная программа, запускает exe-шник и вводит необходимые данные в этот exe-шник через TEdit TButton. И когда данные не верные, то выскакивает этот Dialog (окно с исключением вероятно :))


 
DVM ©   (2010-09-06 13:08) [10]


> Zhen73 ©   (06.09.10 13:01) [9]


> И когда данные не верные, то выскакивает этот Dialog (окно
> с исключением вероятно :))

Теперь осталось разобраться, какая из двух программ выдает исключение.
Если убить процесс "основной программы" - это окно с исключением остается на экране?


 
Игорь Шевченко ©   (2010-09-06 13:42) [11]


> И когда данные не верные, то выскакивает этот Dialog


больно слышать


 
Zhen73 ©   (2010-09-06 14:16) [12]

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

основной процесс можно спокойно закрыть, вызываемая программы будет работать дальше


 
Zhen73 ©   (2010-09-06 14:19) [13]

Запускаю exe-шник через CreateProcess

       CreateProcess(filename, nil, nil, nil, False,
       CREATE_DEFAULT_ERROR_MODE or NORMAL_PRIORITY_CLASS,
       nil, nil, SUInfo, ProcInfo);

все равно тоже самое.

Может подкажите необходимые параметры для CreateProcess что-бы родительская программа не зависила от запускаемого процесса


 
DVM ©   (2010-09-06 16:03) [14]


> исключение выдает - вызываемая программа

как ты данные в нее передаешь?


 
DVM ©   (2010-09-06 16:05) [15]


> Zhen73 ©   (06.09.10 14:19) [13]

Дело тут совсем в другом. Как ты не запускай - дело не в этом.

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


 
Zhen73 ©   (2010-09-06 17:03) [16]

Данные передаю при помощи сообщений

       h1 := FindWindow("TCodeForm", nil);
       h2 := FindWindowEx(h1, 0,"TPanel", "");
       h3 := FindWindowEx(h2, 0,"TEdit", "");
       h4 := FindWindowEx(h2, 0,nil, PChar("Nummer OK [ENTER]"));
       h5 := FindWindowEx(h2, 0,nil, PChar("Abbruch [ESC]"));

               SendMessage(h3, WM_SETTEXT, 0, Integer(PChar(IntToStr(i))));
               SendMessage(h4, WM_LButtonDown, 1, 1);
               SendMessage(h4, WM_LButtonUP, 1, 1);
 
Да, проблема в том, что когда вываливается сообщение от ошибке ввода, моя основная программа, перестает работать и ждет когда это окно закроют


 
DVM ©   (2010-09-06 17:16) [17]


> Zhen73 ©   (06.09.10 17:03) [16]

SendMessageTimeout возьми или PostMessage


 
Leonid Troyanovsky ©   (2010-09-06 21:03) [18]


> DVM ©   (06.09.10 17:16) [17]

> SendMessageTimeout возьми или PostMessage

SendMessage & WM_SETTEXT.
PostMessage & BM_CLICK.

--
Regards, LVT.



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

Текущий архив: 2010.11.28;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.01 c
15-1282105610
Knight
2010-08-18 08:26
2010.11.28
Есть ли программа для хранения фрагментов кода, заметок...


2-1283258748
Igor_M
2010-08-31 16:45
2010.11.28
TCPClient и TCPServer


15-1282194037
php
2010-08-19 09:00
2010.11.28
php, странности с именем файла


15-1282377068
Дмитрий2
2010-08-21 11:51
2010.11.28
wwDBRichEditMSWord


2-1283177453
Fr
2010-08-30 18:10
2010.11.28
Остановка потока