Autor Beitrag
Bayo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: So 17.08.03 17:05 
Hi zusammen...

Ich probiere irgendwie das Handle des Fensters, das den Fokus hat, herauszufinden! Die funktion GetFocus funktioniert nur innerhalb der eigenen Anwendung! Ich müsste das Handle des "fokusierten" Fensters der aktiven Anwendung haben, egal welche Anwendung aktiv ist! Hm, ich hoffe ihr versteht, was ich meine!?

Grüsse und vielen Dank.. Dominic
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 17.08.03 17:10 
Bayo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: So 17.08.03 17:54 
GetForegroundWindow gibt das Handle des Hauptfensters der aktiven Anwendung zurück und nicht des Fensters, dass effektiv den Fokus hat!

Leider funktioniert das nicht :( trotzdem vielen dank!
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 17.08.03 20:14 
Und was ist mit Suche in: Delphi-Forum, Delphi-Library GETACTIVEWINDOW?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 17.08.03 23:55 
foo.
Bayo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Di 19.08.03 16:58 
Folgend der funktionierende Code:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TForm1.WMHotKey(var Msg : TWMHotKey); 
var 
  attach, attachTo: Cardinal; 
  value: String
begin 
  Case Msg.HotKey of 
    FOCUSEDWND_HOTKEY: begin 
      attach := GetWindowThreadProcessId(GetForegroundWindow, nil); 
      attachTo := GetCurrentThreadId; 
      if AttachThreadInput(attach, attachTo, True) then begin 
        hFocusedWnd := GetFocus; 
        AttachThreadInput(attach, attachTo, False); 
      end else begin 
        hFocusedWnd := GetFocus; 
      end
      value := 'Test'
      SendMessage(hFocusedWnd, WM_SETTEXT, 0, Integer(@value[1])); 
    end
  end
end;


Problem: GetFocus funktioniert nur für fenster die durch den selben thread erzeugt wurden!

Um diese Funktion trotzdem verwenden zu können, muss der thread des fensters, das den eingabefokus hat, mit dem thread, der die funktion GetFocus aufruft "verbunden" werden. Das geschieht mit AttachThreadInput.

Grüsse Dominic