Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
Delphi XE3 Enterprise
|
AW: CPU Auslastung eines Delphi-Programms drosseln
16. Jun 2010, 10:53
Ein anderer Vorschlag
Delphi-Quellcode:
uses Tlhelp32;
{$R *.dfm}
function getPid(const name: string): integer;
var
hProcSnap: THandle;
pe32: TProcessEntry32;
begin
result:= 0;
hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
if hProcSnap = INVALID_HANDLE_VALUE then exit;
pe32.dwSize := SizeOf(ProcessEntry32);
if Process32First(hProcSnap, pe32) = true then
while Process32Next(hProcSnap, pe32) = true do
begin
if lowerCase( pe32.szExeFile) = name then
begin
result:= pe32.th32ProcessID;
break;
end;
end;
CloseHandle(hProcSnap);
end;
Procedure SetProcessPriority(const fn:String;Priority:Integer);
{IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS , HIGH_PRIORITY_CLASS, REALTIME_PRIORITY_CLASS}
var
newhandle:Thandle;
begin
newhandle := OpenProcess(PROCESS_SET_INFORMATION, false, getPid(fn));
setpriorityclass(newhandle, Priority);
CloseHandle(newhandle);
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
SetProcessPriority(Lowercase(ExtractFileName(Application.ExeName)),IDLE_PRIORITY_CLASS);
end;
Thomas Wassermann H₂♂ Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂♂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
|
|
Zitat
|