Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.013 c
1-6600
Калян
2003-03-20 17:22
2003.04.03
Работа с памятью


8-6616
Yanval
2002-12-30 17:54
2003.04.03
gif


1-6559
distinger
2003-03-21 16:23
2003.04.03
Обращение к компонентам главной формы из Dll


14-6744
CAMOBAP
2003-03-14 08:52
2003.04.03
Паскаль не работает


1-6512
DeMoN-777
2003-03-24 18:10
2003.04.03
Вытаскивание нужной информации из текстовика