Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Erhöhen der Maus-/Tastaturpriorität (https://www.delphipraxis.net/31691-erhoehen-der-maus-tastaturprioritaet.html)

Borti 12. Okt 2004 17:35


Erhöhen der Maus-/Tastaturpriorität
 
Hallo!
ich hab mir ein Programm geschrieben, dass einen Thread mit der Priorität 31 abspaltet. (Diese hohe Priorität ist für die Funktion des Programmes unablässlich)
Leider muss der Benutzer über Tastatur oder Maus den Nebenthread beenden können, was natürlich bei dieser hohen Priorität nicht klappt. (Hab mich quasi selber ausgesperrt) Kann ich dafür nicht die Priorität der Tastatur/Maus auch auf 31 setzen, um ein beenden zu ermöglichen?
Gruß,
Borti

Muetze1 13. Okt 2004 08:55

Re: Erhöhen der Maus-/Tastaturpriorität
 
Moin!

Hä? Dann hast du das mit den Prioritäten nicht ganz richtig gemacht wenn du sowas brauchst. Wenn dein Programm eine solche hohe Priorität braucht, dann kennzeichne es Windows gegenüber als CBT Task und du erhälst mehr Prozesszeit und eine höhere Priorität und ander Vorzüge. Ansonsten würde ich sagen das dein Weg über den Thread mit einer solch hohen Priorität der falsche Weg zur Lösung deines Grundproblems ist...

MfG
Muetze1

Borti 13. Okt 2004 13:09

Re: Erhöhen der Maus-/Tastaturpriorität
 
Was ist bitte ein CBT Task?
("Computer based training" nach google :gruebel:)
Danke,
Borti

Muetze1 13. Okt 2004 13:38

Re: Erhöhen der Maus-/Tastaturpriorität
 
Moin!

CBT hast du ja nun schon geklärt, im deutschen auch als CUA (computerunterstützte Ausbildung) bekannt. Durch eine spezielle Bekanntmachung gegenüber Windows kannst du ein Programm als CBT kennzeichnen und dann erhält dieses Programm mehr Möglichkeiten und vor allem auch grundlegend mehr Prioritäten. Ein CBT Programm kann in das System eingreifen bzw. sich alles mögliche abfangen, andere Prozesse begrenzen/beschneiden. Damit hättest du eine grössere Wahrscheinlichkeit das dein Thread besser läuft ohne eine solch hohe Priorität und gleichem Ergebnis. Grundlegend solltest du aber eher dazu übergehen eine grundlegend andere Lösung zu finden, weil einen Thread auf Realtime laufen zu lassen ist mehr als "krank" und zeigt eigentlich recht eindeutig das die Problemlösung falsch angegangen wurde. Das sieht für mich schon fast wie ein ständiges polling aus und da sollte man dringen mal schauen ob es nicht auch eine trigger gesteuerte Möglichkeit gibt.

MfG
Muetze1

Borti 13. Okt 2004 17:04

Re: Erhöhen der Maus-/Tastaturpriorität
 
richtig,
der Thread pollt mir den LPT-Port und es darf zwischen zwei Abfragen höchstens 1msec. liegen.

Wo krieg ich den Informationen über diese CBT-Programme? (bei google krieg ich nur Vorschläge über Didaktik)
Und wie kann ich mit Delphi mein Programm gegenüber Windows als CBT kennzeichen?

Danke,
Borti

Tubos 13. Okt 2004 18:51

Re: Erhöhen der Maus-/Tastaturpriorität
 
Zitat:

richtig,
der Thread pollt mir den LPT-Port und es darf zwischen zwei Abfragen höchstens 1msec. liegen.
Ich muss sagen, ich weiß nicht wie...
aber man kann den LPT-Port abhören, ohne die CPU zu 99,9% auszulasten!

dizzy 13. Okt 2004 23:29

Re: Erhöhen der Maus-/Tastaturpriorität
 
Auf ein Abtastintevall von 1msec kommt man mit Windows doch eh nicht, oder!? :gruebel: Weil den Scheduler wirst du nicht platt kriegen, und das ist auch gut so ;).
Da wäre imho ein Echtzeitsystem geeigneter.

Borti 14. Okt 2004 16:59

Re: Erhöhen der Maus-/Tastaturpriorität
 
Ich benutze QueryPerformanceTimer. Im Schnitt hab ich eine zeit von 20nanosec. zwischen zwwei Abfragen. Die 100% CPU auslastung kommt halt daher, dass der thread eine Schleife ist, die über eine tastatureingabe beendet wird.
Gruß,
Borti

Spezi1980 14. Okt 2004 17:17

Re: Erhöhen der Maus-/Tastaturpriorität
 
Wieso mußt du nen LPT Port in einem Intervall von 1ms abfragen? Die Übertragungszeit von nem LPT Port ist so gering, dass IMHO der Status an dem Port sich eh nur alle paar Millisekunden ändert.

Da reicht es auch aus, wenn der Port aller 10ms oder noch mehr abgefragt wird, weil du eh nicht schneller auf ein Ereigniss reagieren kannst als die Daten reinkommen.

Borti 15. Okt 2004 12:54

Re: Erhöhen der Maus-/Tastaturpriorität
 
an dem LPT-Port hängt eine von mir selbst entwickelte hardware, die eine auflösung von 1msec braucht.
Das der LPT-Port hinterherkommt denk ich schon, wenn ich mir die Datenblätter der verwendeten TTL-ICs anschaue.
(Aber wir driften vom Thema ab! Ich versuch das immer noch mit der tastaturpriorität zu regeln)
Gruß,
Borti


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz