Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.14;
Скачать: CL | DM;

Вниз

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 вся ветка

Текущий архив: 2005.08.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.047 c
10-1098969514
Oleg_
2004-10-28 17:18
2005.08.14
COM сервер


1-1122280587
LLi kn par
2005-07-25 12:36
2005.08.14
Как сд-ть так чтобы ф-лы бфли скрытыми, системными и т. д.


4-1119348127
clickmaker
2005-06-21 14:02
2005.08.14
Как программно узнать, что диск - subst?


14-1122129270
}{eRsOn
2005-07-23 18:34
2005.08.14
Копирование повреждённого CD!


1-1122092093
N!tro
2005-07-23 08:14
2005.08.14
Поиск в WebBrowser