Mit ShellExecute gleich die Priorität festlegen?

RuFFnEcK

Erfahrenes Mitglied
Hallöchen zusammen,
ich hoffe ihr könnt mir helfen ;)
Es geht um folgendes:

Ich starte während der Laufzeit meines Programms ein weiteres Programm das ganze sieht so aus:

Code:
ShellExecute(NULL, "open", "PeBusMon.exe", comport.c_str(), NULL, SW_SHOW);

Besteht die Möglichkeit für diesen Prozess mit diesem befehl gleich eine Prirität festzulegen?
Ich hab jetzt mal ein bisle gesucht im Netz und auch in der MSN Libary nachgeschaut und hab das Gefühl das geht net^^
Wäre zwar schade, jedoch kein großer Aufwand es mit einer anderen API Funktion zu machen ;)

Würde mich freuen wenn jemand hier vielleicht was zu sagen könnte :)
Am liebsten gleich mit Code^^

Grüsse
 
Da gehst du besser über CreateProcess. Das ist zwar etwas pingelig mit den Parametern, dafür erhält man ein Process-Handle zurück, mit dem man allerhand anstellen kann (zum Beispiel Thread-Priorität verändern).

Nicht vergessen, das Process-Handle irgendwann freigeben!
 
Hallöchen,
erstmal danke für die Antwort^^
Aber noch haben andere Probleme höhere Prorität,
jedoch werde ich wohl bald darauf zurück kommen...
Mir kam grad der Gedanke ob man nicht CreateProcess (hat ja ne monster parameter liste^^)
gleich die prio mitgeben kann, ohne die im nachhinein über das handle zu verändern...
Zum schliessen des Progs brauch ich den handle nicht mehr, also würde ich gar keinen annehmen, sodass ich auch keine freigeben muss :D

Grüsse
 
Bei den dwCreationFlags kannst du noch eine Grundpriorität für den neuen Prozess mitgeben:

ABOVE_NORMAL_PRIORITY_CLASS, BELOW_NORMAL_PRIORITY_CLASS, HIGH_PRIORITY_CLASS, IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS, REALTIME_PRIORITY_CLASS

Wie genau sich die auswirken, steht in der MSDN unter GetPriorityClass.

Wenn das geht, dass du die ProcessInfo nicht gefüllt kriegst, ist gut, sonst musst du die wirklich selber freigeben.
 
Hallo zusammen,
ja ich habs mir grad nomma durchgelesen und es ist wirklich sehr unverständlich^^
Hier die editierte version (wenn auch schwierig jetzt weil ich ja das Wissen getz schon habe, was ich hier in Erfahrung bringen wollte^^)
Mein Programm startet ein weiteres, welches die kommunikation auf dem PeBus übernimmt...
Ich lege dem PeBusMon die Daten in Form eines telegrams auf den TCP/IP Stack und der PeBusMon sendet das ganze dann weiter...
(Dient nur zur hintergrundInfo)
Jedenfalls kann es einem Benutzer ja mal passieren dass er ausversehen den PeBusMon beendet...
Für diesen Fall setzt ne routine ein (ich kann ja dann nicht mehr kommunizieren) die prüft ob der PeBusMon noch aktiv ist, wenn nicht starte ich ihn neu...
Und was will ich mit handles, der PeBusMon soll nur einmal mit hoher Prio gestartet werden und fertig, beenden tu ich den einfach über das telegram "SHUTDOWN"
Theoretisch wenn ich den Handle freigebe hat das doch nichts direkt mit dem Prozess an sich zu tun, oder?
Also läuft der weiter...wenn ich eh nix vor hab mit dem handle kann ich den doch sofort freigeben.
Und "HIGH_PRIORITY_CLASS" sollte ausreichen weil bei "REALTIME_PRIORITY_CLASS"
sofern man bei Windows von realtime sprechen kann ;-] befürchte ich das mein Prog zu kurz kommt auf langsamen rechnern...

Danke für die Antwort^^
 
Zuletzt bearbeitet:
moin


Hab zwar den ersten Teil deines Beitrags grad nciht verstanden, aber ja du kannst den Handle sofort wieder frei geben.


mfg
umbrasaxum
 
Genau, wie umbrasaxum schon sagte, das Handle kannst du sofort freigeben, das tut dem laufenden Prozess nichts. Der läuft weiter.
 
Danke die Herren werde dass mal schnellstmöglich in der nächsten Version umsetzen ;)
Aber im moment haben leider noch ein paar Unschöne Sachen vorrang...

Grüsse
RuFF
 
Zurück