Announcement

Collapse
No announcement yet.

Handle von "Sender" ermitteln...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Handle von "Sender" ermitteln...

    Hallo,

    ich möchte systemweit einen bestimmten Hotkey abfangen und dann einen Text an das Control senden, in dem die Taste gedrückt wurde.
    Ein Hook funktioniert soweit, aber wie komme ich an das Handle des Controls heran?

    Vielen Dank...

  • #2
    Hallo,

    ich habe noch einmal geblättert und von Nico eine Lösung gefunden:

    <pre>
    procedure THauptForm.HKHotKey(Sender: TObject);
    var
    SelfId : DWord;
    ThreadId : DWord;
    Attached : Boolean;
    begin
    SelfId := GetCurrentThreadId;
    ThreadId := GetWindowThreadProcessId(GetForegroundWindow, nil);
    Attached := False;
    if (ThreadId <> 0) and (ThreadId <> SelfId) then
    Attached := AttachThreadInput(SelfId, ThreadId, True);
    if Attached xor (ThreadId = SelfId) then
    try
    Fokus := GetFocus;
    finally
    if Attached then
    AttachThreadInput(SelfId, ThreadId, False);
    end;
    end;
    </pre>

    Gruß Ul

    Comment


    • #3
      Hi

      Ein HotKey ließe sich auch mit dem API definieren, OHNE zu hooken. Generell sind systemweite Hooks die schlechteste Alternative, Resourcen-fressed und blockierend, langsam und unsicher.

      Schau mal in der Hilfe nach <b>RegisterHotKey</b>.

      Gruß Hage

      Comment


      • #4
        Hallo Hagen,

        vielen Dank für deinen Tipp. Habe schon umgebaut. Läuft problemlos.

        Gruß Ul

        Comment

        Working...
        X