![]() |
lokaler hook
hellö,
hab wie so oft mal wieder ein problem, weiß auch nicht ob ich da grad in die richtige kategorie poste. Ich will die Tastatur hooken allerdings nur lokal. Also eigentlich ein ganz normaler wobei ich nur die zeischen haben will die in meiner anwendung gedrückt werden. Formname.onkeypress kann ich nicht nehmen weil das ereignis nicht ausgelöst wird wenn ich zum Beispiel ein Button auf dem form den Focus hat und ich will auch nicht allen Komponenten auf meinem Formular ein on Keypress zu ordnen. Hintergrund: Ich hab ein programm für Touchscreens geschrieben und nun viel irgend jemandem ein das es auch auf tastatureingaben reagieren soll ==> alles tastatureingaben die gemacht werden während mein formular im fordergrund ist sollen irgendwie gemeldet werden. Mögliche Lösung die mir aber nicht recht gefällt: Die Hookfunktion nicht in eine dll auslagern sondern direkt ins programm schreiben, somit können alle anderen programme nicht drauf reagieren weil sie nicht auf den speicherbereich zugreifen dürfen ==> angst das da irgendwie eine Accessviolation hervorgerufen wird. Zusammenfassung des Problems: Wie fange ich alle zeichen in meine Form.OnKeypressMethode (oder ähnliches) ab die ausgelöst werden während mein formular(programm) aktiv ist |
Re: lokaler hook
Du musst der Application.OnMessage eine eigene Prozedur zuweisen. Dann erhälst du dort alle Messages für deine Anwendung.
grüße, daniel |
Re: lokaler hook
Man kann auch dann die Taste über Form.onKeyPress ermitteln, wenn ein anderes Element den Fokus hat, indem man KeyPreview des Formulars auf true setzt.
|
Re: lokaler hook
hab keypreview auf true gestellt aber das klappt nicht wirklich - das andere hab ich gar nicht erst probiert das mit dem application.onmessage hab ich noch nicht probiert. Kann es daran liegt das ich wenn ich den Focus auf der TWebbrowser hab das nix an mein programm gelangt sondern direct an die TWebbrowserkomponente geliefert wird
|
Re: lokaler hook
Ich habs eben mal mit nem tMemo getestet (hab kein tWebBrowser installiert). Da gehts. Was heißt "nicht so richtig"? Kann es sein, dass Du spezielle Tasten abfragen wilst à la Shift ect? Dann musst Du über onKeyDown gehen. Das arbeitet auch mit KeyPreview zusammen.
Du musst nicht für jedes Element eine eigene Prozedur schreiben. Du könntest jedem Element die selbe onKeyPress zuzuweisen. |
Re: lokaler hook
ich will nur "ABCDEFG...." haben. wenn der Focus auf meinem formular ist und nicht auf TWebbrowser gehts. Halt nur nicht wenn er auf TWebbrowser ist
|
Re: lokaler hook
Hm. Ich bin nicht so tief drin in der Message-Materie. Vielleicht ist der tWebBrowser da e Bissl eigen.
Ich würde dann (wenn ich halt nich weiter weiß) zum Bleistift aus WebBrowser1.onKeyPress eine externe Prozedur aufrufen (mit Key als Parameter) und in Form1.onKeyPress ebenso. Dann hast Du eben über einen kleinen Umweg das selbe Verhalten. |
Re: lokaler hook
problem gelöst, ich hab einfach ActiveControl auf EinesDerPanels gesetzt und dann klappts, TWebbrowser fängt wahrscheinlich alles ab
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:57 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