Priorität eines Prozesses erhöhen



  • Hallo,

    hab folgendes Problem: ich rufe mit CreateProcess(..) einen Prozess auf und will bei diesem Prozess die Priorität erhöhen. Hab das mal so ausprobiert:

    PROCESS_INFORMATION proc_info;
    	ZeroMemory ( &proc_info, sizeof(proc_info) );	// mit Nullen auffüllen
    	STARTUPINFO start_info;							
    	GetStartupInfo( &start_info );					// StartupInfos erhalten
    	start_info.wShowWindow = SW_SHOW;
    
    	if ( CreateProcess( EXE,						// auszuführende Datei mit vollst. Pfad
    						argumente,					// Kommandozeilenargumente
    						NULL,
    						NULL,
    						true,
    						CREATE_DEFAULT_ERROR_MODE,
    						NULL,
    						PFAD,						// Pfad, indem das auszuführende Programm liegt
    						&start_info,				// StartupInfo
    						&proc_info					// erhält Infos über den aufgerufenen Prozess
    										) == 0 ) {
    
    		printf("Fehler beim Starten des Programms\n");
    		exit (1);
    	}
    
    	HANDLE hprocess = proc_info.hProcess;
    	unsigned long ExitCode;
    
    	if ( SetPriorityClass(hprocess, HIGH_PRIORITY_CLASS) == NULL) {
    		printf("Prioritaet konnte nicht erhoeht werden!\n");
    		exit (1);
    	}
    

    Das funktioniert auch, nur dass dann sonst überhaupt nichts mehr läuft. Hab erfahren, dass man da auch was mit SetThreadPriority machen kann. Hab dann auch mal in der MSDN-Library nachgeschaut und gelesen, dass da THREAT_SET_INFORMATION gesetzt sein muss. Leider hab ich da dann irgendwann überhaupt nicht mehr durchgeblickt. Hat jemand schon damit gearbeitet oder weiss wie es geht?

    Dankeschön!
    MFG
    Barney



  • mach einfach:

    SetThreadPriority (proc_info.hThread, THREAD_PRIORITY_xxx); // xxx: siehe msdn
    

    damit setzte die prio für den ersten thread des programms das mit CreateProcess() gestartet wurde (der thread, mit der 'main' funktion)



  • Hi,

    so klappts! Danke für die schnelle Hilfe!

    MFG
    Barney


Anmelden zum Antworten