Autor Beitrag
JRegier
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Di 07.02.06 17:55 
Hallo,

ich möchte das beim Computerstart Delphi automatisch langsam startet, weil ich habe einen 700 MHz Rechner
und da ich in Delphi noch JEDI Komponenten installiert habe startet Delphi ohnehin langsam.

Und während Delphi langsam aber sicher in Vorbereitung ist, könnte ich andere Aufgaben erledigen
und es würde durch das Setzen auf Niedrige Priorität nicht stören.

Ich starte in Niedriger Priorität per einstellungen im Link also ich rufe Delphi so auf
ausblenden Quelltext
1:
C:\WINDOWS\system32\cmd.exe /c start /LOW C:\Programme\Borland\Delphi6\delphi32.exe					


aber dann ist es lästig wenn man das immer im Taskmanager ändern muß,

Gibt es ein Programm dass mir per PopupMenü auf das Symbol in der Taskleiste oder auf den Header eines
Fensters diese Funktion zur Verfügung stellt? So dass ich die Prozesspriorität schnell ändern kann?



Moderiert von user profile iconNarses: Topic aus Off Topic verschoben am Di 21.04.2009 um 15:18
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Di 21.04.09 14:09 
Finch hat eine sehr gute Lösung gefunden. Das Delphi-Programm dazu musst du dir aber schon selber schreiben :wink: .
user profile iconFinch hat folgendes geschrieben Zum zitierten Posting springen:
Ok vielen Dank für die schnelle und korrekte Antwort! Ich schreibe noch mal für alle anderen, komplettes Beispiel um von einem beliebigen Prozess die Priorität ändern kann:

Als 1. ist es wichtig, ' Tlhelp32 ' in die Uses einzubinden !

Als 2. erstellt man eine beliebige Prozedur ( ich teste immer gern durch einen Button, welchen ich hier einfach mal nehme ;9 )
 procedure Button1Click(Sender: TObject);

Als 3. nehme man diese Funktion getPid !
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
 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;


Als letztes lassen wir nun durch einen Klick auf den Button mal die Prozesspriorität von dem Explorer auf Echtzeit setzen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
 procedure TForm1.Button1Click(Sender: TObject);
var 
priosetzhandle : thandle;
begin
    priosetzhandle := OpenProcess(PROCESS_SET_INFORMATION, false, getPid('explorer.exe'));
    setpriorityclass(priosetzhandle, REALTIME_PRIORITY_CLASS);
    CloseHandle(priosetzhandle);
end;


Mit NORMAL_PRIORITY_CLASS setz man den Prozess wieder auf normal ;)