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 Fenster-Nachricht bei Numlock? (https://www.delphipraxis.net/43824-fenster-nachricht-bei-numlock.html)

Lesco 9. Apr 2005 10:37


Fenster-Nachricht bei Numlock?
 
ich will jedesmal abfangen wenn die num taste gedrückt wird( in einem GetMessage-Hook)
welche nachricht wird beim drücken von numlock verwendet?? mit wm_keydown/up und dann wParam auf VK_NUMLOCK prüfen funtzts net. hatte das selbe prob mit der windows-Taste(WM_SYSCOMMAND statt WM_KEYDOWN.) nur welche nachricht is bei num die entsprechende? mit spy++ hab ichs net rausgefunden und suche hier im forum und bei google hat auch nix ergeben.

SirThornberry 9. Apr 2005 10:43

Re: Fenster-Nachricht bei Numlock?
 
also bei mir wird beim drücken der NumTaste die 256 (message) angezeigt und beim loslassen die 257.

(hab einfach ein TApplicationEvents aufs Form gepackt und die messages in eine Memo ausgeben lassen)

Lesco 9. Apr 2005 10:46

Re: Fenster-Nachricht bei Numlock?
 
256=WM_KEYDOWN und 257=WM_KEYUP
nur wenn ich die nachricht dann bei wParam=VK_NUMLOCK abfange wird num trotzdem ein/ausgeschaltet.

SirThornberry 9. Apr 2005 10:48

Re: Fenster-Nachricht bei Numlock?
 
damit sollte dein Problem doch gelöst sein. einfach bei wm_keydown die params der Message mal überprüfen was da drin steht.

Mephistopheles 9. Apr 2005 10:52

Re: Fenster-Nachricht bei Numlock?
 
Wo willst du denn Numlock abfangen? Der Hook läßt ja schon darauf schließen, daß es eventuell nicht auf dem eigenen Fenster ist. Dann könnte GetAsyncKeyState() dein Freund sein.

Lesco 9. Apr 2005 10:55

Re: Fenster-Nachricht bei Numlock?
 
das hab ich gemacht und wenn wParam halt VK_NUMLOCK ist hab ich die nachricht auf WM_NULL gesetzt aber trotzdem wird num aktiviert/deaktiviert.
Edit: Also num will ich systemweit abfangen über allen Programmen ich schau mir AsyncKeyState mal an.

SirThornberry 9. Apr 2005 10:58

Re: Fenster-Nachricht bei Numlock?
 
du hast das prinzip des hooks noch nicht verstanden. du musst die ganze message verwerfen. Also diese nicht weitergeben.

Lesco 9. Apr 2005 11:01

Re: Fenster-Nachricht bei Numlock?
 
es funzt bei anderen Tasten problemlos wenn ich folgendes ausführe
Delphi-Quellcode:
type
  pTMSG = ^TMSG;

....

pTMSG(lParam).message = WM_NULL;
damit wird die nachricht als WM_NULL nachricht weitergeleitet und vom zielfenster nicht verarbeitet

//Edit: GetAsyncKeyState is glaub ich nicht hilfreich ich will ja verhindern das der numlock-status verändert wird

Mephistopheles 9. Apr 2005 11:04

Re: Fenster-Nachricht bei Numlock?
 
Abfangen heißt ja nich immer blocken!

Also ein Message-Hook wird da nicht viel bringen. Ich denke, daß ein echter Tastaturhook besser wäre und auch besser zum Problem paßt. Sicherlich geht es ja auch hier um irgendeine Umschaltung wenn Numlock gedrückt wird. Daher könnte man u.U. die GetAsyncKeyState()-Abfrage auch allein im verarbeitenden Programm benutzen und käme komplett ohne Hook aus. Ansonsten würde ich immer entsprechend im Hook GetAsyncKeyState() oder GetKeyState() benutzen um den aktuellen Wert von Numlock auszulesen und zu berücksichtigen.

Lesco 9. Apr 2005 11:08

Re: Fenster-Nachricht bei Numlock?
 
also ich will das verändern des numlock-status komplett verhindern und auch ein paar andere Sachen wie zb dass sich das Startmenü öffnet( das hab ich nun schon hinbekommen indem ich WM_SYSCOMMAND geblockt habe wenn wParam= SC_TASKLIST war) und deshalb hab ich gehofft das ich alles in einer Hook-Prozedur unterbringen könnte und nicht noch einen Hook bräuchte


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:47 Uhr.

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