Vielen Dank für eure Antworten!
Folgend ein Modell meines Problems:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 =
class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
hFocusedWnd: HWND;
procedure WMHotKey(
var Msg : TWMHotKey);
message WM_HOTKEY;
end;
const
FOCUSEDWND_HOTKEY = 101;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotKey(
Handle, FOCUSEDWND_HOTKEY, MOD_CONTROL, Ord('
N'));
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnregisterHotKey(
Handle, FOCUSEDWND_HOTKEY);
end;
procedure TForm1.WMHotKey(
var Msg : TWMHotKey);
begin
Case Msg.HotKey
of
FOCUSEDWND_HOTKEY: hFocusedWnd := GetFocus;
end;
end;
end.
GetForegroundWindow gibt das
Handle des vordersten Formulars zurück und nicht des Fensters, das effektiv den eingabefokus hat! GetFocus wäre schön die richtige funktion, sie funktioniert aber nur innerhalb des Threads, der sie aufruft! Der Ansatz von teebee hört sich daher gut an
Werde hier noch ein feedback geben!
Grüsse Dominic