Błąd przy zmianie prioetytetu

0

Może ktoś wie co jest <ort>nietak </ort>w tym kodzie program powinien każdą aplikacje z listbox-a podwyżać prioetytet na czasu rzeczywistego

var
PHandle, FHandle: THandle;
Process:TProcessEntry32;
Done, Next: Boolean;
EXE : String;
I : Integer;
begin
for I := 0 to ListBox1.Count - 1 do
try
Files.itemindex := Files.itemindex+1;
EXE := Files.items[Files.itemindex];
EXE := Files.Items[Files.itemindex+1];
Statictext7.Caption := 'Trwa zmiana prioetytetui : ' + EXE + ' ...';
Statictext7.Refresh;
Sleep(100);
FHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
Process.dwSize := Sizeof(Process);
Next := Process32First(FHandle,Process);
while Next do
begin{ jesli sciezka dostepu sie zgadza }
if AnsiLowerCase(Process.szExeFile) = AnsiLowerCase(EXE) then
begin
PHandle:= OpenProcess (PROCESS_QUERY_INFORMATION, FALSE, Process.th32ProcessID);
{ to spróbujemy zmienic priotytet }
Done := SetPriorityClass(PHandle, 1);
SetThreadPriority(PHandle, REALTIME_PRIORITY_CLASS);
SetPriorityClass(PHandle, REALTIME_PRIORITY_CLASS);
if not Done then showmessage('Błąd podczas zmiany prioetytetu
end;
Next := Process32Next(FHandle,Process);
end;
CloseHandle(FHandle);
Statictext7.Caption := 'Zakończono zmiane prioetytetu!';
except
files.ItemIndex := -1
end;
end;

0

Może dodaj w miejscu gdzie jest petla: Application.ProcessMessages;

Nie wiem też czy przypadkiem jakiś program na Twojej liście nie jest do tego stopnia używany przez system że nie można mu zmienić priorytetu (nie mówiąc już o np: zamknięciu procesu)

Poza tym na drugi raz używaj znaczników

 

przy wstawianiu kodu Delphi, będzie czytelniej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1