Текущий архив: 2003.04.03;
Скачать: CL | DM;
ВнизCreateProcess и NT Найти похожие ветки
← →
_BasiL_ (2003-03-19 16:46) [0]Имеется вот такой код запуска приложений
ZeroMemory(@si,sizeof(si));
si.cb:=SizeOf(si);
if not CreateProcess( nil, // No module name (use command line).
PChar(Stroka), // Command line.
nil, // Process handle not inheritable.
nil, // Thread handle not inheritable.
False, // Set handle inheritance to FALSE.
0, // No creation flags.
nil, // Use parent"s environment block.
nil, // Use parent"s starting directory.
si, // Pointer to STARTUPINFO structure.
pi ) // Pointer to PROCESS_INFORMATION structure.
Then Begin
ShowMessage("Error!");
Exit;
End;
При запуске ДОСовских программ из под WIN NT(2K, XP), программы запускаются через cmd.exe, и они не работают, а запускаю из того же фара все ОК, если сделать ярлык, тоже все работает.
Кто, что посоветует поменять в коде программы или какой нибудь другой запуск.
← →
Snap (2003-03-19 16:53) [1]Попробуй ShellExecute
← →
_BasiL_ (2003-03-19 17:27) [2]Удалено модератором
← →
ki11er (2003-03-19 17:44) [3]
> программы запускаются через cmd.exe
Как запускаются (чему равно Stroka)?
cmd нужно запускать с параметрами, чтобы работало так, как ты хочешь...
← →
AlexKr (2003-03-19 17:45) [4]А сам запуск на выполнение где? Что-нибудь типа WaitForSingleObject()
← →
ki11er (2003-03-19 17:48) [5]2 AlexKr
8-O 8-D
← →
panov (2003-03-19 18:31) [6]Совет: для запуска используй полный путь до исполняемого файла.
← →
_BasiL_ (2003-03-21 10:17) [7]Вызывается программа BinkleyTerm (фидошная) при запуске, например из ФАРа, она дозванивается, соединяется отправляет (получает) файлы, короче все ОК. А если запускать из DELPHI (WIN NT) то запускается с помощью cmd.exe, и после дозвона, в тот момент, когда звонилка должна в статусе написать connect пишется Hang Up, так, раза с 10 дозванивается, а из ФАРа с первого раза :-(. Я сделал запуск проги через ПИФ файл у меня вроде заработала.
← →
_BasiL_ (2003-03-21 10:21) [8]Вот полная процедура запуска внешних программ
Function TAppWindows.RunProgramm(Stroka: String): Boolean;
Var
si: STARTUPINFO;
pi: PROCESS_INFORMATION;
WaitReason: DWord;
NameFile: String;
Begin
ZeroMemory(@si,sizeof(si));
si.cb:=SizeOf(si);
if not CreateProcess( nil, // No module name (use command line).
PChar(Stroka), // Command line.
nil, // Process handle not inheritable.
nil, // Thread handle not inheritable.
False, // Set handle inheritance to FALSE.
0, // No creation flags.
nil, // Use parent"s environment block.
nil, // Use parent"s starting directory.
si, // Pointer to STARTUPINFO structure.
pi ) // Pointer to PROCESS_INFORMATION structure.
Then Begin
ShowMessage("Ошибка! Запуск программы не возможен!");
RunProgramm:=FALSE;
Exit;
End;
If Pos(".",Stroka)<>0 Then NameFile:=AppWindows.UpStr(Copy(Stroka,1,Pos(".",Stroka)-1));
Repeat
WaitReason:=WaitForSingleObject(pi.hProcess,0);
Application.ProcessMessages;
Until (WaitReason <> WAIT_TIMEOUT);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
RunProgramm:=TRUE;
End;
А это значение Stroka="Bink.bat"
Урезанное, содержимое батника
bnu
bt
bnu /u
← →
Anatoly Podgoretsky (2003-03-21 10:51) [9]"Bink.bat" это не программа, а данные (параметр) для командного процессора, вот его и надо запускать!
← →
_BasiL_ (2003-03-21 11:11) [10]Я `bink.bat` и запускаю, в заголовке досовского окошка пишется `...\cmd.exe` при установки коннекта с нами клиенты отваливаются. Вот я и спрашивал как избежать запуска через `cmd.exe` или может у меня, что не так в процедере запуска внешних программ.
Кстати есть NT-евая версия этой програмки, так при ее записке через `cmd.exe` она вообще вываливается с ошибкой при запуске. А из того-же ФАРа запускается и дозванивается.
Страницы: 1 вся ветка
Текущий архив: 2003.04.03;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.008 c