Текущий архив: 2002.12.02;
Скачать: CL | DM;
Вниз
CreateProcess Ошибка! Найти похожие ветки
← →
Борис (2002-11-21 13:25) [0]procedure TForm1.Button1Click(Sender: TObject);
var st_startupinfo:STARTUPINFO;
str_lpprocessinformation:process_information;
begin
st_startupinfo.lpReserved:=nil;
st_startupinfo.lpTitle:=nil;
st_startupinfo.dwFlags:=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
st_startupinfo.cbReserved2:=0;
st_startupinfo.lpReserved:=nil;
if CreateProcess(nil, "c:\program files\Internet explorer\iexplore.exe c:\index.html" ,nil, nil, TRUE, Normal_Priority_Class, nil , nil, st_startupinfo, str_lpprocessinformation)= false then
begin
showmessage("Процесс не создан!");
end;
end;
Открывается IE с файликом index.html, но сразу выскакивает:
Программа вып. нед. операцию и будет закрыта:
Программа IEXPLORE вызвала сбой при обращении к странице памяти
в модуле MSVCRT20.DLL по адресу 0167:7fc37939.
Регистры:
EAX=8190501c CS=0167 EIP=7fc37939 EFLGS=00010202
EBX=0000c000 SS=016f ESP=01eaef5c EBP=01eaefb0
ECX=2063fbff DS=016f ESI=8197d494 FS=769f
EDX=bffc9490 ES=016f EDI=7fc69000 GS=0000
Байты по адресу CS:EIP:
f3 a5 8b c8 83 e1 03 f3 a4 8b 45 fc 3d 00 01 00
Содержимое стека:
00000000 0000040a 0000c000 83e4047f 02006b6f 6b6f8334 00000000 05ef2784 05eff824 84500007 01e86b6f f7d60209 05ef0776 07760000 01dd0209 00000d70
Потом такое-же окно для модуля Kernel.
В чем ошибка? И еще, почему не срабатывает, если в первом параметру указываешь исполняемый, а во втором параметр?
CreateProcess("c:\program files\Internet explorer\iexplore.exe, "c:\index.html" ,nil, nil, TRUE, Normal_Priority_Class, nil , nil, st_startupinfo, str_lpprocessinformation) ???
← →
Борис (2002-11-21 13:27) [1]Про второй вопрос уже сам понял (пока писал) ;-)
Надо было поставить пробел перед параметром:
CreateProcess("c:\program files\Internet explorer\iexplore.exe, " c:\index.html" ,nil, nil, TRUE, Normal_Priority_Class, nil , nil, st_startupinfo, str_lpprocessinformation)
А вот вопрос об ошибке в силе!
← →
Kudatsky (2002-11-21 13:46) [2]Попробуй функции FileExecute или FileExecuteWait из RxLib. Я их использую так:
Path:=HelpPath+"\Index.htm";
if FileExecute(Path, "", "", esNormal) <= 32 then
ShowMessage("Не запускается Internet Browser");
← →
KoluChi (2002-11-21 13:49) [3]Рабочий код:
var
PrInfo: PROCESS_INFORMATION;
StInfo: STARTUPINFO;
ExitCode: DWord;
begin
ZeroMemory(@StInfo, sizeof(StInfo));
with StInfo do
begin
cb := SizeOf(StInfo);
wShowWindow := WindowState;
dwFlags := STARTF_USESHOWWINDOW;
end;
if not CreateProcess(nil, PChar(ExecLine), nil, nil, False, CREATE_NEW_PROCESS_GROUP, nil, nil, StInfo, PrInfo) then Exit;
WaitForSingleObject(PrInfo.hProcess, INFINITE);
CloseHandle(PrInfo.hProcess);
CloseHandle(PrInfo.hThread);
← →
Борис (2002-11-21 13:50) [4]Kudatsky, спасибо за ответ, однако нужно именно CreateProcess!
← →
Внук (2002-11-21 14:25) [5]Пока не почистите структуры и не укажете их размеры, работать все равно не будет.
См. KoluChi © (21.11.02 13:49)
← →
Борис (2002-11-21 14:37) [6]Все работает! Сделал так:
ZeroMemory(@st_startupinfo, sizeof(st_startupinfo));
ZeroMemory(@str_lpprocessinformation, sizeof(str_lpprocessinformation));
st_startupinfo.cb := SizeOf(st_startupinfo);
st_startupinfo.wShowWindow :=SW_SHOWNORMAL;
st_startupinfo.lpReserved:=nil;
st_startupinfo.lpTitle:=nil;
st_startupinfo.dwFlags := STARTF_USESHOWWINDOW;
st_startupinfo.cbReserved2:=0;
st_startupinfo.lpReserved:=nil;
if CreateProcess(Pchar(Eprocess.text), PChar(" "+Edit1.text), nil, nil, TRUE, Normal_Priority_Class, nil , nil, st_startupinfo, str_lpprocessinformation)= false then
begin
showmessage("Процесс не создан!");
end;
← →
Юрий Зотов (2002-11-21 14:57) [7]Зачем выполнять лишние действия и действия, которые и без того выполняются по умолчанию?
1. ProcessInformation можно не чистить.
2. Для Вашего случая в StartupInfo после чистки достаточно заполнить только CB.
В итоге код упростится, а результат будет тот же.
← →
Борис (2002-11-21 15:02) [8]Большое спасибо! Код упростил.
а теперь вот-такой вопрос:
Как с помощью ShelExecute изменить параметр, чтобы уже открытый эсплорер заставить открыть файл index2.html? Прочитал описание, но там вроде только на открытие папки/файла, а как быть в данном случае?
Страницы: 1 вся ветка
Текущий архив: 2002.12.02;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.007 c