Форум: "WinAPI";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
ВнизCreateProcess трабл Найти похожие ветки
← →
ORMADA © (2005-06-23 13:41) [0]Доб день!Делаю запуск приложения следующим образом
function ExecAndWait(const AFileName, AParams: string): boolean;
var
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
CmdLine: string;
begin
{ Помещаем имя файла между кавычками, с соблюдением всех пробелов в именах Win9x }
CmdLine := """ + AFilename + "" " + AParams;
FillChar(StartInfo, SizeOf(StartInfo), #0);
with StartInfo do
begin
cb := SizeOf(StartInfo);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := SW_SHOW;
end;
Screen.Cursor := crHourGlass;
Result := CreateProcess(nil, PAnsiChar(CmdLine), nil, nil, false,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,nil,
PAnsiChar(ExtractFilePath(AFilename)), StartInfo, ProcInfo);
{ Ожидаем завершения приложения }
if Result then
begin
WaitForInputIdle(ProcInfo.hProcess, INFINITE);
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
end;
Screen.Cursor := crDefault;
end;
и никак не хочет запускаться
ExecAndWait("c:\winnt\system32\services.msc","/s");
ExecAndWait формирует строчку типа "c:\winnt\system32\services.msc" /s
хотя через пуск\выполнить всё запускается нормально
в чём косяк ?
← →
Kerk © (2005-06-23 13:44) [1]
> CREATE_NEW_CONSOLE
> "c:\winnt\system32\services.msc" /s
хм...
← →
BiN © (2005-06-23 13:44) [2]if Result then
begin
...
end
else
RaiseLastOSError;
← →
BiN © (2005-06-23 13:46) [3]Kerk © (23.06.05 13:44) [1]
Ха, действительно, а я и не заметил. -)
← →
VMcL © (2005-06-23 13:55) [4]>>BiN © (23.06.05 13:44) [2]
if not Result then
RaiseLastOSError;
ИМХО, так лучше.
← →
ORMADA © (2005-06-23 14:34) [5]2 kerk не панял в чём прикол...
> CREATE_NEW_CONSOLE
выкинул
не работает
> "c:\winnt\system32\services.msc" /s
дык да
мало ли что в эту функция попадёт мобыть
c:\win 2000\system32\services.msc и тогда без " не отработает
← →
alpet © (2005-06-23 15:34) [6]services.msc - это не исполняемый файл. Надо запускать через MMC:
CreateProcess (nil, "mmc \windows\system32\services.msc", ...);
← →
alpet © (2005-06-23 15:40) [7]Вернее так:
ExecAndWait ("C:\Windows\System32\mmc.exe", "C:\Windows\System32\services.msc");
← →
ORMADA © (2005-06-24 09:27) [8]2 alpet тогда как вында запускает всё это дело через командную строку ?
1 - cmd
2- "C:\WINNT\system32\services.msc" /s
фсё работает
как объяснить ?
← →
Kerk © (2005-06-24 09:29) [9]ORMADA © (24.06.05 9:27) [8]
как объяснить ?
Ну примерно так же как и blablabla.bmp она тоже запустит. Ибо ассоциации файлов.
← →
ORMADA © (2005-06-24 09:32) [10]2 Kerk тогда как сделать чтоб запускались все файлы ?
← →
Kerk © (2005-06-24 09:34) [11]
ShellExecute(0,"open","blabla.bmp",SW_SHOWNORMAL);
← →
ORMADA © (2005-06-24 09:50) [12]вот так получается нада делать
if ShellExecute(Application.Handle, "open", PAnsiChar("""+AFileName+"""),PAnsiChar(AParams),
PAnsiChar(ExtractFilePath(AFileName)), SW_SHOWNORMAL) <= 32 then //если ошибка, то возвращаемый код <=32
RaiseLastWin32Error;
так вроде работает :)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.013 c