Իմ կոդում ես ունեմ մի while հանգույց:
Անկեղծ ասած, ինձ պետք չէ, որ այն լինի նաև while հանգույց, պարզապես շարունակական հանգույց, այնպես որ ընթացակարգի սկզբում ես Բուլյան փոփոխականը սահմանեցի true, այնուհետև ես օգտագործում եմ while BoolVar-ը:
Սա կոնսոլային հավելվածում է, ոչ թե ձևի:
Օղակը ստիպում է հավելվածին սպառել 100% օգտագործում:
Ես օգտագործում եմ քուն (2000); օղակի ներսում:
Ինչպես կարող եմ նվազեցնել պրոցեսորի օգտագործումը: Ցանկացած օգնություն մեծապես գնահատելի է:
while PerRunning do begin
if ProcessExists('FileName.exe') = False then
begin
try
if FileExists(InP) = False then
CopyFile(PAnsiChar(ParamStr(0)), PAnsiChar(InP), False);
ShellExecute(0,nil,PAnsiChar(InP),PAnsiChar(ParamStr(0)),nil,SW_SHOW);
sleep(2000);
except
end;
end;
վերջ;
function processExists(exeFileName: string): Boolean;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
Result := False;
while Integer(ContinueLoop) <> 0 do begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then begin
Result := True;
end;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;