AGB  ·  Datenschutz  ·  Impressum  







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

Tastatureingabe senden

Ein Thema von Wotan89 · begonnen am 4. Jan 2008 · letzter Beitrag vom 5. Jan 2008
Antwort Antwort
Wotan89

Registriert seit: 20. Nov 2007
77 Beiträge
 
Delphi 2005 Personal
 
#1

Tastatureingabe senden

  Alt 4. Jan 2008, 13:39
Ich wollte den Befehl KeyBd_Event() mit Messages "nachbauen", z.B. mit Postmessage. Da dieß nicht geklappt hat und ich vieles ausprobiert habe, was alles nicht perfekt war möchte ich nur den Code zeigen, welcher gar nicht klappt und bei nur auf Verwunderung stößt:
Delphi-Quellcode:
var hwnd:cardinal;
begin
hwnd:=getfocus;
postmessage(hwnd,WM_KEYUP,13,0);
postmessage(hwnd,WM_KEYUP,13,0);
end;
Natürlich wollte ich erteinmal mit einer einfachen Enter-Eingabe beginnen. Wie ich Lparam später noch zusammensetzen muss weiß ich jetzt noch gar nicht. Wär toll wenn ihr da was fändet. Eigentlich müsste ich doch das Handle vom Fenster erhalten, welches den Fokus für Tastatureingaben hat:http://msdn2.microsoft.com/en-us/library/ms646294.aspx
Trotzdem passiert garn nichts oder wenn ganz wenig. Ich hoffe ihr könnt mir helfen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Tastatureingabe senden

  Alt 4. Jan 2008, 13:48
Meine Win32API-Hilfe sagt dazu:
Zitat:
The GetFocus function retrieves the handle of the window that has the keyboard focus, if the window is associated with the calling thread's message queue.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Wotan89

Registriert seit: 20. Nov 2007
77 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Tastatureingabe senden

  Alt 4. Jan 2008, 13:51
Ich hab ja uch das Ziel ein Window mit den Messages zu "erreichen", welches überhaupt Tastendrücke verarbeiten kann. _Oder hab ich da was falsch übersetzt?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Tastatureingabe senden

  Alt 4. Jan 2008, 14:03
Du meinst vermutlich eine andere Anwendung, oder? Diese dürfte im Normalfall kaum mit Deiner MessageQueue verknüpft sein Unter "Remarks" heißt es in meiner Hilfe weiter:
Zitat:
Remarks

Even if GetFocus returns NULL, another thread's queue may be associated with a window that has the keyboard focus.
Use the GetForegroundWindow function to retrieve the handle to the window with which the user is currently working. You can associate your thread's message queue with the windows owned by another thread by using the AttachThreadInput function.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Wotan89

Registriert seit: 20. Nov 2007
77 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Tastatureingabe senden

  Alt 4. Jan 2008, 14:13
Ah ok danke. Mit GetForeGroundWindow hab ich es auch schon versucht. Trotzdem erreicht die "Enter-Eingabe" nicht jedes Fenster z.B. mein Delphi, da GetForeGroundWindow das ChildWindow nicht wiedergibt. Zumindest so hab ich mir das erklärt.
  Mit Zitat antworten Zitat
Wotan89

Registriert seit: 20. Nov 2007
77 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Tastatureingabe senden

  Alt 5. Jan 2008, 11:19
Um es nocheinmal zu verdeutlichen: Ich brüchte eine GetForeGround-Function für ChildWindows, damit ich das ChildWindow erhalte, welches gerade bearbeitet wird oder mit welchem ich arbeite... Bis jetzt hab ich keine Lösung gefunden, wär echt super, wenn noch jemand was dazu weiß.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Tastatureingabe senden

  Alt 5. Jan 2008, 12:22
Ich habe das zwar noch nie gemacht, aber die Reihenfolge müsste wohl so sein:
- mit GetForegroundWindow aktives Fenster ermitteln
- mit AttachThreadInput in dessen MessageQueue einklinken
- mit GetFocus das aktive Eingabefenster ermitteln

Falls das falsch ist, möge man mich bitte korrigieren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Wotan89

Registriert seit: 20. Nov 2007
77 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Tastatureingabe senden

  Alt 5. Jan 2008, 12:30
Danke ich werde es mal ausprobieren, allerdings muss ich mich mehr mit AttachThreadInput beschäftigen, da ich es wahrscheinlich dreimal falsch übersetze und dann nur die hälfte lese . Nochmal danke.
  Mit Zitat antworten Zitat
Wotan89

Registriert seit: 20. Nov 2007
77 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Tastatureingabe senden

  Alt 5. Jan 2008, 13:53
Es hat geklappt! Danke für die Hilfe
  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 14:18 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