Priorität des Tasks einstellen-Wieder was gefunden, ungelöst
Übersicht BlitzBasic BlitzPlus
SereyanneBetreff: Priorität des Tasks einstellen-Wieder was gefunden, ungelöst |
Mo, Jun 21, 2010 13:30 Antworten mit Zitat |
|
---|---|---|
Hi,
hab noch ein paar Fragen: 1. Wenn ich ein Prog schneller oder langsamer laufen lassen will, hab ich ja im Windows die Möglichkeit, im Taskmanager beim entsprechenden Prozess die Priorität höher oder niedriger einzustellen. Kann ich das direkt ins Plus mit rein programmieren, damit das fertige Proggi gleich höher/niedriger startet? 2. Wie erstellt man eine DLL???? LG, Sereyanne |
||
- Zuletzt bearbeitet von Sereyanne am Mi, Aug 18, 2010 4:23, insgesamt 2-mal bearbeitet
Eingeproggt |
Mo, Jun 21, 2010 14:41 Antworten mit Zitat |
|
---|---|---|
1.) Wenn du dein Programm schneller / langsamer machen willst dann verändere die Taktung deines Timers oder manipuliere deine Variablen - versuch bitte bloß nicht die Priorität eines Prozesses selbst zu manipulieren. Allein schon weil mir da keine Möglichkeit bekannt wäre wie das überhaupt geht. Wäre doch n Paradies für Viren wenn sowas zulässig wäre.
2.) Man kompiliert sie - aber das geht weder mit BB noch mit BMax. mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
BladeRunnerModerator |
Mo, Jun 21, 2010 15:09 Antworten mit Zitat |
|
---|---|---|
zu 2. Es ist zumindest begrenzt möglichm it BMax Dlls zu erstellen, das war zumindest mal testweise drin. Wie es genau geht sollte dir die Suche sagen. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Sereyanne |
Mo, Jun 21, 2010 15:22 Antworten mit Zitat |
|
---|---|---|
Achso, ok, vielen Dank.
Ja, die Suche ergibt vorrangig PureBasic - na da hab ich ja schon wieder was neues zum lernen... Dennoch vielen Dank! Ich bin schon mal weiter! |
||
Noobody |
Mo, Jun 21, 2010 15:26 Antworten mit Zitat |
|
---|---|---|
Die Priorität kann man mit SetPriorityClass aus der WinAPI verändern. | ||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
Sereyanne |
Mo, Jun 21, 2010 15:30 Antworten mit Zitat |
|
---|---|---|
Oh wie schön, das klingt doch gut!
Wäre schön, wenn ich mir die laden könnte - auf deinen Link komm ich irgendwie nicht drauf... |
||
Eingeproggt |
Mo, Jun 21, 2010 15:50 Antworten mit Zitat |
|
---|---|---|
Hmm, verdammt - in beiden Punkten falsch geantwortet Sorry.
Aber dennoch bin ich kein großer Freund von der Idee dass sich das Programm selbst ne Priorität nimmt die es haben will |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Sereyanne |
Mo, Jul 05, 2010 17:22 Antworten mit Zitat |
|
---|---|---|
Noobody hat Folgendes geschrieben: Die Priorität kann man mit SetPriorityClass aus der WinAPI verändern.
Noch mal danke, aber irgendwie komm ich damit nicht weiter. Soll ich jetzt einfach Zitat: BOOL WINAPI SetPriorityClass(
__in HANDLE hProcess, __in DWORD dwPriorityClass ); irgendwohin kopieren und daraus die dll machen oder was? sorry wenn ich so blöd frage... ach ja, @Eingeproggt: ich hab nicht vor nen virus zu schreiben, also keine sorge |
||
Noobody |
Mo, Jul 05, 2010 21:04 Antworten mit Zitat |
|
---|---|---|
Nein, du musst einfach eine DECLS schreiben, in der du die DLL angibst, aus der die Funktion kommt (sollte auch auf MSDN stehen) und dann die Funktion selber deklarieren. Da dort aber auch das Handle auf den eigenen Prozess verlangt wird, musst du die entsprechenden Funktionen, mit denen du das Handle bekommst, ebenfalls angeben.
Wenn du dich nicht grade mit der WinAPI auskennst, wird das relativ schwierig. Allerdings sollte man mit der Prozesspriorität in der Regel sowieso nicht rumfummeln, vor allem nicht für ein kleines Spiel oder ähnliches |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
Sereyanne |
Di, Jul 06, 2010 19:31 Antworten mit Zitat |
|
---|---|---|
Nee sorry, ich kenn mich mit dieser Win api überhaupt nicht aus.
Vielleicht hilft euch Profis ja dieser Thread hier, den ich gefunden habe, der aber leider schon geschlossen ist: https://www.blitzforum.de/foru...orityclass Wie genau geh ich damit jetzt um? ach ja, nein es ist kein einfaches dummes Spielchen, ich schreibe gerade ein Plus-Proggi mit einer komplizierten Berechnung, und das möchte ich dann einfach mit der Priorität ein bisschen niedriger laufen lassen, damit das nicht so das System aufhält. |
||
Silver_Knee |
Mi, Jul 07, 2010 10:00 Antworten mit Zitat |
|
---|---|---|
Code: [AUSKLAPPEN] BOOL WINAPI SetPriorityClass(
__in HANDLE hProcess, __in DWORD dwPriorityClass ); .... Requirements .... DLL Kernel32.dll musst du sozusagen für Blitz übersetzen: Erstelle in dem ?:\????\Blitz3d\userlibs ordner eine waehle_beliebigen_namen.decls Da rein schreibst du Code: [AUSKLAPPEN] .lib "Kernel32.dll"
SetPriorityClass%(hProcess%,dwPriorityClass%) handle und dword sind beides integer in blitz daher die "%" nach den Variablen. der BOOL der zurück gegeben wird kann in Blitz einfach mit nem integer dargestellt werden. Die passende Priorität steht hier: Zitat: ABOVE_NORMAL_PRIORITY_CLASS
0x00008000 BELOW_NORMAL_PRIORITY_CLASS 0x00004000 HIGH_PRIORITY_CLASS 0x00000080 IDLE_PRIORITY_CLASS 0x00000040 NORMAL_PRIORITY_CLASS 0x00000020 PROCESS_MODE_BACKGROUND_BEGIN 0x00100000 PROCESS_MODE_BACKGROUND_END 0x00200000 REALTIME_PRIORITY_CLASS 0x00000100 Das 0x vor der zahl heißt dass diese eine Hexadezimale ist. Also kannst du sie dir entweder in dezimal umrechnen oder in blitz das 0x durch ein $ ersetzen: BlitzBasic: [AUSKLAPPEN] Const ABOVE_NORMAL_PRIORITY_CLASS=$00008000 ach und hier: https://www.blitzforum.de/foru...orityclass findet mal die funktion setpriorityclass auch im teil 2 EDIT: Ach und den Wert für hProcess findest du unter b3d mit SystemProperty("AppHINSTANCE") |
||
Sereyanne |
Do, Jul 15, 2010 2:12 Antworten mit Zitat |
|
---|---|---|
Cool, danke!
Und wie finde ich den Wert für hProcess in Plus? Oder: wie setze ich die Priorität in Plus? |
||
Silver_Knee |
Do, Jul 15, 2010 8:48 Antworten mit Zitat |
|
---|---|---|
hmm vllt kannst dus dir hacken. immerhin ist es der erste wert den dein programm übergeben bekommt also der erste Wert der Main-Funktion und der erste wert auf dem Stack deines Programmes soweit ich weiß.
Ich bin nich der ASM-Mensch aber vllt kann jemand was damit anfangen. |
||
hazumu-kun |
Do, Jul 15, 2010 11:56 Antworten mit Zitat |
|
---|---|---|
@Silver_Knee:
Das wäre Overkill, es gibt bestimmt eine WinAPI funktion dafür. @Sereyane: Benutz mal die Forensuche, irgendwo hier gab es die vollständigen API DECLS und irgendwo hier anders auch den vollständigen Satz Konstanten (Das was bei MSDN immer GROSS getippt ist und wie ein fester Wert benutzt wird.). |
||
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann -> nicht omnipotent |
Silver_Knee |
Do, Jul 15, 2010 12:31 Antworten mit Zitat |
|
---|---|---|
also ich habe jetzt die ganzen Winapi dinger aus dem Forum (der kerl mit dem Garfield hat die doch reingestellt) durchsucht und da ist keine getHInstance oder sowas dabei | ||
Eingeproggt |
Do, Jul 15, 2010 13:04 Antworten mit Zitat |
|
---|---|---|
Ohne mich näher damit befasst zu haben, ist eventuell GetWindowThreadProcessId das was ihr sucht?
Man beachte den 2. Parameter: Zitat: A pointer to a variable that receives the process identifier. If this parameter is not NULL, GetWindowThreadProcessId copies the identifier of the process to the variable; otherwise, it does not.
mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Xaymarehemals "Cgamer" |
Do, Jul 15, 2010 13:34 Antworten mit Zitat |
|
---|---|---|
SystemProperty("AppHINSTANCE") ? | ||
Sereyanne |
Fr, Jul 16, 2010 18:15 Antworten mit Zitat |
|
---|---|---|
Eingeproggt hat Folgendes geschrieben: Ohne mich näher damit befasst zu haben, ist eventuell GetWindowThreadProcessId das was ihr sucht?
Danke, ist bestimmt zu gebrauchen! Was ich genau suche, ist wie ich die Priorität gleich höher/niedriger setze. Hiermit kann ichs nur auslesen oder? Jetzt müsste nur noch jemand so freundlich sein und mir das nach Plus übersetzen! @Xaymar: Im Prinzip hast du recht, aber hier gehts um Blitz Plus! Dein Befehl ist nur für B3D! |
||
Eingeproggt |
Fr, Jul 16, 2010 18:47 Antworten mit Zitat |
|
---|---|---|
Meine Antwort war auf diese Frage bezogen:
Zitat: Und wie finde ich den Wert für hProcess in Plus?
Das heißt das was du mit der von mir geposteten Funktion rauskriegst (bedenke: Du brauchst Prozes, nicht Thread) musst du im Code von SilverKnee verwenden. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Sereyanne |
Fr, Jul 16, 2010 20:35 Antworten mit Zitat |
|
---|---|---|
Achso, sorry das ging irgendwie an mir vorbei.
Okay, dann versuch ichs mal. Wenn in der Zwischenzeit einer Lust hat, dasselbe zu tun, freue ich mich aufs Vergleichen. Vielen Dank, ich liebe dieses Forum! |
||
Übersicht BlitzBasic BlitzPlus
Powered by phpBB © 2001 - 2006, phpBB Group