Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.015 c
1-4417
ssmaxx
2002-11-23 01:21
2002.12.02
Вставка изображения в ЛЮБОЕ место файла MS Word


14-4607
Driverrr
2002-11-11 17:19
2002.12.02
Windows 2000


4-4692
PHN
2002-10-18 01:22
2002.12.02
GetWindowText и WinSight


7-4648
Tony'c
2002-09-28 20:06
2002.12.02
Как отключить 80 порт сетевой карты


3-4222
Vovik
2002-11-14 10:13
2002.12.02
QREPORT или другие построители отчетов.