Priorität des Tasks einstellen-Wieder was gefunden, ungelöst

Übersicht BlitzBasic BlitzPlus

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Sereyanne

Betreff: Priorität des Tasks einstellen-Wieder was gefunden, ungelöst

BeitragMo, Jun 21, 2010 13:30
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Jun 21, 2010 14:41
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BladeRunner

Moderator

BeitragMo, Jun 21, 2010 15:09
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Jun 21, 2010 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Jun 21, 2010 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Jun 21, 2010 15:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh wie schön, das klingt doch gut! Very Happy
Wäre schön, wenn ich mir die laden könnte - auf deinen Link komm ich irgendwie nicht drauf...

Eingeproggt

BeitragMo, Jun 21, 2010 15:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, verdammt - in beiden Punkten falsch geantwortet Sad 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 Evil or Very Mad
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Sereyanne

BeitragMo, Jul 05, 2010 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink

Noobody

BeitragMo, Jul 05, 2010 21:04
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Razz
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

BeitragDi, Jul 06, 2010 19:31
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Jul 07, 2010 10:00
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Jul 15, 2010 2:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Cool, danke!
Und wie finde ich den Wert für hProcess in Plus?
Oder: wie setze ich die Priorität in Plus?

Silver_Knee

BeitragDo, Jul 15, 2010 8:48
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Jul 15, 2010 11:56
Antworten mit Zitat
Benutzer-Profile anzeigen
@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

BeitragDo, Jul 15, 2010 12:31
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Jul 15, 2010 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Xaymar

ehemals "Cgamer"

BeitragDo, Jul 15, 2010 13:34
Antworten mit Zitat
Benutzer-Profile anzeigen
SystemProperty("AppHINSTANCE") ?

Sereyanne

BeitragFr, Jul 16, 2010 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
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! Wink

@Xaymar: Im Prinzip hast du recht, aber hier gehts um Blitz Plus! Dein Befehl ist nur für B3D!

Eingeproggt

BeitragFr, Jul 16, 2010 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Jul 16, 2010 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
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!

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group