AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

lokaler hook

Ein Thema von SirThornberry · begonnen am 18. Nov 2003 · letzter Beitrag vom 18. Nov 2003
Antwort Antwort
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#1

lokaler hook

  Alt 18. Nov 2003, 17:47
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
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#2

Re: lokaler hook

  Alt 18. Nov 2003, 17:49
Du musst der Application.OnMessage eine eigene Prozedur zuweisen. Dann erhälst du dort alle Messages für deine Anwendung.

grüße, daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Benutzerbild von Thunderchild
Thunderchild

Registriert seit: 12. Nov 2003
Ort: Nohra
139 Beiträge
 
Delphi 7 Personal
 
#3

Re: lokaler hook

  Alt 18. Nov 2003, 17:50
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.
Das letzte Schöne, das in C geschrieben wurde, war Schuberts 9. Sinfonie.
Meine Softwareseite (Link aktualisiert am 13.12.2006).
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: lokaler hook

  Alt 18. Nov 2003, 17:59
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
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Thunderchild
Thunderchild

Registriert seit: 12. Nov 2003
Ort: Nohra
139 Beiträge
 
Delphi 7 Personal
 
#5

Re: lokaler hook

  Alt 18. Nov 2003, 18:08
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.
Das letzte Schöne, das in C geschrieben wurde, war Schuberts 9. Sinfonie.
Meine Softwareseite (Link aktualisiert am 13.12.2006).
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: lokaler hook

  Alt 18. Nov 2003, 18:13
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
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Thunderchild
Thunderchild

Registriert seit: 12. Nov 2003
Ort: Nohra
139 Beiträge
 
Delphi 7 Personal
 
#7

Re: lokaler hook

  Alt 18. Nov 2003, 18:22
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.
Das letzte Schöne, das in C geschrieben wurde, war Schuberts 9. Sinfonie.
Meine Softwareseite (Link aktualisiert am 13.12.2006).
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: lokaler hook

  Alt 18. Nov 2003, 18:29
problem gelöst, ich hab einfach ActiveControl auf EinesDerPanels gesetzt und dann klappts, TWebbrowser fängt wahrscheinlich alles ab
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:58 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