Автор |
Сообщение |
Indigo Ангел |
|
Я из своей программы хочу запустить другую прогу. Но запускать её нужно тогда, когда комп сильно ни о чём не думает.
Мои примерные предположения:
1. Запускать прогу через другой поток с минимальным приоритетом (фоновым). Как это сделать, я знаю, но не уверен насчёт результата, да и работы много.
или
2. Определить уровень загруженности процессора и, если он ничем не занят, то запускать прогу. Но я не знаю как узнать на сколь загружен проц.
Подскажите насчёт второго варианта или предложите свой вариант, plz... |
|
|
|
|
Indigo Ангел |
|
|
|
|
Lindows Форумчанин |
|
Код: |
uses ...ToolWin, Windows...
procedure Run(App: string);
var
ErrStr: string;
PMSI: TStartupInfo;
PMPI: TProcessInformation;
begin
try
CreateProcess(nil, @App[1], nil, nil, False, NORMAL_PRIORITY_CLASS,
nil, nil, PMSI, PMPI);
except
ErrStr := 'Fault run process: ''' + App + '''';
Application.MessageBox(@ErrStr[1], 'Failure process', MB_OK + MB_ICONERROR);
end;
end; |
Код: |
uses ShellApi;
...
// Запуск файла
ShellExecute(Handle, nil, 'c:\windows\calc.exe', nil, nil, SW_SHOW); |
Код: |
function ExecAndWait(aCmd: string; WaitTimeOut: cardinal = INFINITE): Cardinal;
var
si: STARTUPINFO;
pi: PROCESS_INFORMATION;
res: BOOL;
r: cardinal;
begin
with si do
begin
cb := sizeof(si);
lpReserved := nil;
lpDesktop := nil;
lpTitle := PChar('External program "' + aCmd + '"');
dwFlags := 0;
cbReserved2 := 0;
lpReserved2 := nil;
end;
res := CreateProcess(nil, PChar(aCmd), nil, nil, FALSE, 0, nil, nil, si, pi);
if res then
WaitForSingleObject(pi.hProcess, WaitTimeOut);
GetExitCodeProcess(pi.hProcess, r);
result := r;
end;
// Пример использования:
procedure Exec(CommandStr, WaitTime);
begin
if ExecAndWait(CommandStr, WaitTime) = WAIT_FAILED then
ShowMessage('Истекло время ожидания внешней программы ' + CommandStr);
end; |
|
|
|
|
|
Greh Начинающий |
|
Lindows зачем такие изощрения с запуском? Можно использовать функцию WinExec.
Код: |
WinExec('c:\progname.exe',SW_NORMAL); |
|
|
|
|
|
|
Аватары: Вкл|Выкл ЮзерИнфо: Вкл|Выкл Подписи: Вкл|Выкл
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы
|
|