Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
5-1093259795
Jenek
2004-08-23 15:16
2005.08.14
Windows и меню


4-1117826046
aga
2005-06-03 23:14
2005.08.14
принцип отбора в панель задач


1-1121859509
pasha L
2005-07-20 15:38
2005.08.14
искусственно создать RXMemoryData


4-1119418092
Progh
2005-06-22 09:28
2005.08.14
Как перевести вывести компьютер в спящий из спящего режим(а)


3-1120653648
<Lelik>
2005-07-06 16:40
2005.08.14
Про SQL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский