Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.02;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
1-4274
сергеич
2002-11-21 10:04
2002.12.02
Компоненты


1-4475
Explorer
2002-11-20 13:04
2002.12.02
Экспорт в Excel XP для FastReport


1-4421
fdutchuo
2002-11-22 17:24
2002.12.02
Хочу немного подправить Windows 98.


3-4236
Takeda
2002-11-14 13:56
2002.12.02
Замена столбца при отображении в DBGrid


3-4229
iva
2002-11-14 11:08
2002.12.02
Как добавить в BDE новый Database Driver Name





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский