Fragen zu PROFAN-Helfern und Tools
  Suchen
 Zurück zur Übersicht
 AutorThema: Prioritäten
Walter
Datum:08.04.02 13:03 Antwortenals Email verschicken (risikowks@web.de) 


Hallo Profaner

Irgendwann habe ich mal ein prf-Beispiel gesehen wie man die Priorität des Programm hochsetzen kann.
Weiss Gott, jetzt wo ich das interessant finde, kann ichs nicht wiederfinden.
Erinnert sich jemand daran ?? wär schon gut.

Version 6.6 Win 98SE

Walter


Marco
Datum:08.04.02 14:52 Antwortenals Email verschicken (MaLenz@gmx.net) 


*rofl* Ich hatte sowas ähnliches auch einmal, aber seit WinME ging das nicht mehr (nur 95 und 98) und dann hab ichs gelöscht gehabt .

MFG Marco
www.DerEismann.com


Sven Schmidts
Datum:08.04.02 15:03 Antwortenals Email verschicken (schmidts@flat2serv.de) 


Hallo,

das müsste mit der API "SetPriorityClass" (Kernel32) funktionieren, dafür brauchst Du die Process-ID, die Du mittels "GetCurrentProcess" (auch Kernel32) bekommst. Müsste also so gehen:

SetPriorityClass(GetCurrentProcess, PRIO)

Mfg.
Sven Schmidts


Sven Schmidts
Datum:08.04.02 15:05 Antwortenals Email verschicken (schmidts@flat2serv.de) 


Nachtrag:

Die Funktionen sind in der WINDOWS.PH definiert, ausserdem die Prioritäten:

NORMAL_PRIORITY_CLASS = $20;
IDLE_PRIORITY_CLASS = $40;
HIGH_PRIORITY_CLASS = $80;
REALTIME_PRIORITY_CLASS = $100;

Mfg.
Sven Schmidts


Frank Abbing
Datum:08.04.02 15:41 Antwortenals Email verschicken (frankabbing@12move.de) 


Hallo,

von so einer Programmierung kann ich dir nur abraten, weil sie eines MultiTasking Systems nicht würdig ist und böse Folgen für andere Programme haben kann.
Wenn allerdings dein Programm der einzige Task ist, ok...
Ich selber hab' auch schon damit herumgespielt, allerdings werden Profan-Programme nur wenig beschleunigt.

Gruß, Frank


Sven Schmidts
Datum:08.04.02 15:46 Antwortenals Email verschicken (schmidts@flat2serv.de) 


Hallo Frank,

es ist durchaus "würdig", es kommt nur drauf an, wie man es nutzt. Es gibt durchaus Prozesse, die kurzfristig (!) die gesamte Power brauchen, weil sie damit durchaus schneller sind. Die Anwendung sollte nur nicht dauerhaft "REALTIME_PRIORITY_CLASS" nutzen ;) Man sollte es aber wirklich nur dann verwenden, wenn es notwendig ist, weil es bei kleinen Dingen nicht soviel bringt.

Sven


Frank Abbing
Datum:08.04.02 17:37 Antwortenals Email verschicken  


Hallo Sven,

du hast sicher recht.
Ich hab' die ganze Sache jetzt generell betrachtet, weil ich denke, das Walter Ohnenamen sein Programm damit dauerhaft beschleunigen möchte.
Gegen kurzfristiges Benutzen bei zeitintensiven Routinen spricht sicherlich nichts.

;-))

Gruß, Frank


Walter
Datum:09.04.02 11:47 Antwortenals Email verschicken (risikowks@web.de) 


Danke für eure Hinweise, ich werde damit experimentieren.
Der Sinn der Sache ist allerdings nicht ( wie von euch vermutet) eine Beschleunigung, sondern;
Mit Hilfe meines Programm teile ich meinen Kindern feste maximalzeiten zu. Daher muss sichergestellt werden, das dieses Programm beim Windowsstart auf jeden Fall erst ablaufen muss.
Ich kann zwar abschiessen mit Ctr Alt Del verhindern und den Desktop per Registry als default erst mal deaktivieren, aber wer schnell genug ist ( und meine Kinder sin das) kommt mittels Doppelklick an den Explorer und kann dann das Programm ignorieren. Daher suche ich nach Möglichkeiten dies zu verhindern. Ist fast schon ein "Spielkampf" Programmierer gegen Anwender.
Am liebsten wäre mir natürlich eine Möglichkeit per Registry-eintrag Maus und Keyboard zu deaktivieren, und erst per Programm wieder zu aktivieren; geht mit Sicherheit, habe aber bisher nicht gefunden wie ( und auf Verdacht mittels "Try and Error" in der Registry rumzumachen ist recht ermüdend und gefährlich)
Falls ich hier weiterkomme wede ich mich mitteilen

Gruß Walter

ps wieso "noname"? "Walter" ist doch ein Name


Sven Schmidts
Datum:09.04.02 13:37 Antwortenals Email verschicken (schmidts@flat2serv.de) 


Hi,

ich verstehe nicht so recht, warum die Priorität beim Sieg der Programmierer helfen soll?! Ich würde, falls es 2000/XP ist, das ganze als Systemdienst laufen lassen. Dann ist das Programm schon geladen, wenn's mal gerade an die Anmeldung im System geht. Oder Du versteckst Deinen eigenen Task. Wo kein Bild, da auch kein Beenden, oder?

Mfg.
Sven Schmidts


Jörg Sellmeyer
Datum:09.04.02 14:35 Antwortenals Email verschicken (joerse@gmx.de) 


Hallo,
Mal'n Tip:
Nenn doch mal Dein Programm um in ein ganz normales PCDienstprogramm.
Es gibt ja diverse, die sich in der Taskleiste breitmachen.
Das startet über Autostart und ruft natürlich das echte Programm auf und
erledigt Deine gewünschten Funktionen.
Alternativ kannst Du auch das Lieblingsspiel Deiner Kinder benutzen.
Außerdem solltest Du ihnen nie verraten, daß man mit festhalten der Umschalt-Taste
die Autostartprogramme deaktivieren kann.
Viel Erfolg
Jörg


Walter
Datum:12.04.02 10:43 Antwortenals Email verschicken (risikowks@web.de) 


Dein Tip ist zwar nett, aber nicht das Problem.
Ich starte das Program schon über die Registry, was schon ausreichend klappt.
HKEY_LOCAL_MACHINE
Software
Microsoft
Windows
Current Version
Run
Schlüssel Program mit Pfad

Wer sich wirklich im Betriebssystem auskennt hat natürlich immer Möglichkeiten der Manipulation, das ist klar!
Das Problem für mich liegt lediglich noch darin, das Windows erst die Startleiste konfiguriert, dann den Desktop(was per Registry leicht zu verhindern ist)

CURRENT_USER
Software
Microsoft
Windows
Current Version
Policies
Explorer
Schlüssel nodesktop $1

und dann erst mein eingetragenes Program.
Der Desktop kann dann per Program generiert werden
PROC ShowDesktop
DEF FindWindow32(2) !"USER32","FindWindowA"
parameters show%
declare desktop&
dim winclass#,8
string winclass#,0="ProgMan"
let desktop&=FindWindow32(winclass#,0)
ShowWindow(desktop&,show%)
dispose winclass#
ShowTaskbar show%
ENDPROC
Mir geht es also nur noch um die Zeit zwischen Generierung der Startleiste und laden des Program, da in dieser Zeit der Explorer als zweiter Task geöffnet werden kann; und das will ich nicht.
Eine zweite Möglichkeit des "Schummeln", also mein Program umgehen, besteht darin beim Beenden von Windows ein Explorerfenster offen zu lassen, so das es beim nächsten Start ebenfalls wieder geöffnet wird.
Dieses Fenster legt sich dann " über" mein Program, hat also eine höhere Priorität.
Bisher hatte ich noch nicht die Zeit die Hinweise zur Einstellung der Priorität auszutesten,vielleicht Sontag oder später.
Wenns denn mal so klappt wie ich mir das vorstelle werde ich dieses Program zur Verfügung stellen.


Andreas Miethe
Datum:12.04.02 17:59 Antwortenals Email verschicken (andreas@andreas-miethe.de) 


Hallo Walter,

trag Dein Programm mal unter :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce

ein.
Dann startet erst dein Programm, alles andere wird erst fortgesetzt wenn dein Programm beendet ist. Allerdings musst Du dafuer sorgen, das Dein Programm vor Windows-Ende wieder eingetragen wird.

Gruss
Andreas


Walter
Datum:12.04.02 18:31 Antwortenals Email verschicken (risikowks@web.de) 


Dank writeini ist das kein Problem;
werde ich probieren.
Und wenn mein Jüngster dann flucht ( weil er nicht mehr spielen kann solange er will) , na dann hats funktioniert :-)

mfg
Walter Köhler


Jörg Sellmeyer
Datum:12.04.02 23:28 Antwortenals Email verschicken (joerse@gmx.de) 


Du scheinst ja 'ne ganz ausgeschlafene Brut zu haben ;-)
Jörg


Jörg Sellmeyer
Datum:14.04.02 12:56 Antwortenals Email verschicken (joerse@gmx.de) 


Hallo Walter,
Mir ist noch was eingefallen.
Hast Du schon mal versucht, Dein Programm in der system.ini unter BOOT/SHELL= einzutragen.
Normalerweise steht dort der Explorer und so hättest Du dann die volle Kontrolle über alles
was aufgerufen werden kann.
Gruß
Jörg


Walter
Datum: 15.04.02 10:23 Antwortenals Email verschicken (risikowks@web.de) 


So langsam wirds was.
Ein Program unter runonce einzutragen ist wirklich eine gute Idee gewesen DANKE!
Unter policies explorer kann man sehr wirkungsvoll mit noclose =1 das normale "runterfahren" unterbinden, so das dies per Program gemacht werden muß.( Zumindest wenn man einen ordentlichen Systemabschlu0 haben möchte). Mit writeini muß das Program nur für die nächste Session wieder neu eingetragen werden, was ja kein Problem ist.

Habe jetzt meinen Kids 5 EUR als Preisgeld angeboten für jede gefundene Möglichkeit zu "schummeln"; bisher mußte ich noch nicht zahlen.
Bin mal sehr gespannt auf die weitere Entwicklung und werde das Endprodukt wohl bald mal vorstellen.
Bis dahin wünsche ich weiter frohes Programmieren und werde mich auf ein neues Projekt stürzen; hab schon eine Vorstellung : ein "Tanzsimulator" für Discofox mit dem man per Program die einzelnen Figuren kombinieren kann um interessante Kombinationen zu erstellen oder neue Figuren zu entwickeln, also ein ganz neuer Bereich für mich. Wahrscheinlich werde ich da wohl die prospeed.dll von Frank einbinden müssen, aber das ist noch Zukunft. Im Falle des Falles werde ich natürlich bei Frank entsprechendes Lizensgeld abdrücken. Arbeit Anderer sollte man honorieren denke ich.

Bis zum nächsten Problem danke ich nochmals herzlichst für die vielseitigen Lösungsansätze und das bereitgestellte Wissen.

Walter Köhler


 Zurück zur Übersicht
 

 Ein kostenloses WebMart Forum
WebMart Homepage Tools kostenlos
Shortwin - denn Glück ist kein Zufall!