|
Banned
Регистрация: 06.01.2008
Сообщений: 904
С нами:
9655526
Репутация:
1821
|
|
Сообщение от desTiny
Micro$oft не рекомендует пользоваться функцией winexec, она оставлена только для совместимости с 9x
ShellExecute - что-то похожее
Ни ту, ни другую функцию заставить работать нормально и правильно лично мне не удалось.
Посему использую CreateProcess.
Ха, а ты молодец!
* ShellExecute - запускает оболочку, ассоциированную с расширением файла, передаваемого ей в качестве параметра. Например, если передать файл с расширением doc, то запустится редактор MS Word (если он установлен в системе). В качестве параметра функции можно передать и файл с раширением exe.;
* CreateProcess - создает новый процесс и его первичный поток. Данная функция используется в Win32 для запуска других приложений.;
* WinExec , LoadModule - достались в наследство от Windows 3.x, Microsoft не рекомендует использовать ее в приложениях Win32 (они работают через вызов CreateProcess).
Функция CreateProcess
По сравнению с ShellExecute, функция дает дополнительные возможности по управлению процессом: можно установить начальный приоритет первого потока процесса, выставить положение и размер окна приложения, дождаться завершения процесса, завершить процесс.
Код:
CreateProcess
(lpApplicationName: PChar, // имя исполняемого модуля
lpCommandLine: PChar, // строка параметров запускаемой программы
lpProcessAttributes: TSecurityAttributes, // структура SECURITY_ATTRIBUTES процесса
lpThreadAttributes: TSecurityAttributes, // структура SECURITY_ATTRIBUTES потока
bInheritHandles: LongBool, // флаг наследования текущего процесса
dwCreationFlags: Longword, // флаги способов создания процесса
lpEnvironment: Pointer, // указатель на блок среды
lpCurrentDirectory: PChar, // текущий диск и каталог
lpStartupInfo:TStartupInfo, // структура STARTUPINFO
lpProcessInformation: TProcessInformation // структура PROCESS_INFORMATION
): LongBool;
Использование:
Код:
var
i:LongBool
i:=CreateProcess('Программа', ' файл', nil, nil, false, NORMAL_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo);
Код:
CreateProcess('C:WindowsSystem32 otepad.exe', ' c: eadme.txt', nil, nil, false, NORMAL_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo);
Последний раз редактировалось De-visible; 29.04.2008 в 23:35..
|