![]() |
Key an anderes Fenster senden das nicht aktiviert ist?
Hi...
Ich weiß, die Frage ist alt, aber ich habe schon seit 2 Tagen gegoogelt und keine funktionierende Antwort bekommen. Ich habe es mit SendMessage probiert:
Delphi-Quellcode:
Ergebnis: Funktioniert nicht.
SendMessage(FensterHandle, WM_CHAR, Ord('C'), 0);
Das Fensterhandle habe ich das weiß ich aber ich habe es auch schon mit WM_KEYDOWN probiert - gleiches Ergebnis. Hat jemand eine funktionierende Antwort parat? Es kann doch nicht so schwer sein >.< PS: Mein Test war bei einem Editor Fenster. Allerdings soll es auch bei allen anderen Fenstern funktionieren. Danke! |
AW: Key an anderes Fenster senden das nicht aktiviert ist?
Du mußt die Tastaturbefehle an das Control senden, welches auch diese Befehle verarbeitet und das ist meistens nicht das Fenster, sondern das darin liegende Memo.
|
AW: Key an anderes Fenster senden das nicht aktiviert ist?
WM_KEYUP und wM_KEYDOWN sollten zum Erfolg führen. Ist aber nicht so trivial, wie dein WM_CHAR, denn Du emulierst Tastendrücke, keine Zeichen.
Edit: Ich meine, es reicht, der Applikation (oder war es das Toplevel-Fenster?) WM_KEYxxx zu senden, denn Du emulierst ja Tastendrücke. |
AW: Key an anderes Fenster senden das nicht aktiviert ist?
Zitat:
|
AW: Key an anderes Fenster senden das nicht aktiviert ist?
FindWindowEx, EnumChildWindows.
|
AW: Key an anderes Fenster senden das nicht aktiviert ist?
Mhhh...
Ich habs jez so probiert:
Delphi-Quellcode:
Nur leider klappt das nit^^
var
FensterHandle, MemoHandle: HWND; begin FensterHandle := FindWindow('', 'Neu Textdokument - Editor'); MemoHandle := FindWindowEx(MemoHandle, FensterHandle, 'TMemo', 'Neu Textdokument - Editor'); SendMessage(MemoHandle, WM_CHAR, Ord('C'), 0); Kapiere das mit FindWindowEx noch nit so ganz^^ [Edit: 21.Juli 2011 um 13:37] Ich habe jeze ma geguckt was denn Zitat:
Delphi-Quellcode:
Da kommen ganz viele ´Emtpys´... Was heißt das? ^^
type
PWindows = ^TWindows; TWindows = record WindowHandle: HWND; WindowText: string; end; TForm1 = class(TForm) TreeView1: TTreeView; procedure FormCreate(Sender: TObject); procedure FormResize(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; PNode, CNode: TTreeNode; AWindows: PWindows; implementation {$R *.dfm} function EnumChildWindowsProc(Wnd: HWnd; Form: TForm1): Bool; export; {$ifdef Win32} stdcall; {$endif} var Buffer: array[0..99] of Char; begin GetWindowText(Wnd, Buffer, 100); //if StrLen(Buffer) 0 then if StrPas(Buffer) = '' then Buffer := 'Empty'; new(AWindows); with AWindows^ do begin WindowHandle := Wnd; WindowText := StrPas(Buffer); end; CNode := Form1.TreeView1.Items.AddChildObject(PNode, AWindows^.WindowText + ':' + IntToHex(AWindows^.WindowHandle, 8), AWindows); if GetWindow(Wnd, GW_CHILD) = 0 then begin PNode := CNode; Enumchildwindows(Wnd, @EnumChildWindowsProc, 0); end; Result := True; end; function EnumWindowsProc(Wnd: HWnd; Form: TForm1): Bool; export; {$ifdef Win32} stdcall; {$endif} var Buffer: array[0..99] of Char; begin GetWindowText(Wnd, Buffer, 100); //if StrLen(Buffer) 0 then if StrPas(Buffer) = '' then Buffer := 'Empty'; new(AWindows); with AWindows^ do begin WindowHandle := Wnd; WindowText := StrPas(Buffer); end; PNode := Form1.TreeView1.Items.AddObject(nil, AWindows^.WindowText + ':' + IntToHex(AWindows^.WindowHandle, 8), AWindows); EnumChildWindows(Wnd, @EnumChildWindowsProc, 0); Result := True; end; procedure TForm1.FormCreate(Sender: TObject); begin EnumWindows(@EnumWindowsProc, Longint(Self)); end; PS: Den Code habe ich nicht selber gescriptet sondern von ![]() [/Edit] [Edit2] Was ist das Parentwindow? Bzw. Wie bekomme ich das Handle vom "Eltern-Fenster" wie der Google-translator meint^^ Dankööö^^ [/Edit2] Danke...^^ |
AW: Key an anderes Fenster senden das nicht aktiviert ist?
TMemo = Delphi-Klasse
ich glaub nicht, daß Microsoft diesen Editor mit Delphi erstellt hat, abgesehn davon haben die in den Delphiklassen gekapseltenControls eh andere Namen. Es gibt da ein Programm, aber dessen Namen vergess ich ständig (dachte erst an WinSpy, aber ich glaub das war's doch nicht :gruebel:) ![]() |
AW: Key an anderes Fenster senden das nicht aktiviert ist?
Das Handle eines Fensters kann ich schon kriegen, aber nur nicht das Handle des Memos... oder ist das auch ein "Fenster" :?
Ich steh grad ziemlich im Wald :O PS: Theoretisch will ich ja eigentlich nur Tastendrücke simulieren, aber da dass nicht funktioniert hat, versuche ich, die Tastendrücke per SendMessage() funktion zu senden - funkt. auch nit ._. Hat nicht iwer eine Lösung für eine der beiden "Fragen"? Danke!!! |
AW: Key an anderes Fenster senden das nicht aktiviert ist?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:38 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