Конференция "Начинающим" » Как запустить приложение из программы и не зависить от него [D6, WinXP]
 
  • Zhen73 © (03.09.10 18:50) [0]
    Запускаю exe-файл из программы:

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

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

    Как сделать так что-бы программа и Exe-шник не имели ничего общего?
  • DVM © (03.09.10 19:25) [1]

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

    Если окно чужой программы захочет выскочить на передний план, оно это сделает, и ты ему не помешаешь. И дело тут не в какой то мистической связи.
  • Германн © (04.09.10 02:05) [2]

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

    Вот интересно что это за "диалоговое окно с предупреждением" если это предупреждение само по себе не важно автору?
  • Anatoly Podgoretsky © (04.09.10 09:47) [3]
    > Германн  (04.09.2010 02:05:02)  [2]

    И чем программа отличается от приложения.
  • Zhen73 © (06.09.10 11:03) [4]
    "Диалоговое окно с предупреждением" : class #32770 (Dialog)
    При этом, доступ к другим программам не блокируется, только к основной программе, которая запустила exe-шник
  • Zhen73 © (06.09.10 11:03) [5]
    может поскажите, каким механизмом попробовать запустить exe-шник?
  • Leonid Troyanovsky © (06.09.10 12:03) [6]

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

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

    --
    Regards, LVT.
  • 12 © (06.09.10 12:19) [7]
  • DVM © (06.09.10 12:43) [8]

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

    У него там окно с исключением вероятно :)
  • Zhen73 © (06.09.10 13:01) [9]
    Вообщем, основная программа, запускает exe-шник и вводит необходимые данные в этот exe-шник через TEdit TButton. И когда данные не верные, то выскакивает этот Dialog (окно с исключением вероятно :))
  • DVM © (06.09.10 13:08) [10]

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


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

    Теперь осталось разобраться, какая из двух программ выдает исключение.
    Если убить процесс "основной программы" - это окно с исключением остается на экране?
  • Игорь Шевченко © (06.09.10 13:42) [11]

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


    больно слышать
  • Zhen73 © (06.09.10 14:16) [12]
    исключение выдает - вызываемая программа
    то что данные не верны - это ничего страшного (это нормальная рабочая ситуация)

    основной процесс можно спокойно закрыть, вызываемая программы будет работать дальше
  • Zhen73 © (06.09.10 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 © (06.09.10 16:03) [14]

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

    как ты данные в нее передаешь?
  • DVM © (06.09.10 16:05) [15]

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

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

    Как ты данные передаешь в вызываемую программу? С помощью сообщений?
    Твоя основная программа небось ждет отклика от второстепенной, а она висит на окне с исключением.
  • Zhen73 © (06.09.10 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 © (06.09.10 17:16) [17]

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

    SendMessageTimeout возьми или PostMessage
  • Leonid Troyanovsky © (06.09.10 21:03) [18]

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

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

    SendMessage & WM_SETTEXT.
    PostMessage & BM_CLICK.

    --
    Regards, LVT.
 
Конференция "Начинающим" » Как запустить приложение из программы и не зависить от него [D6, WinXP]
Есть новые Нет новых   [134431   +14][b:0][p:0.001]