Einzelnen Beitrag anzeigen

Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Makro - statts Tpoint , gedrückte Komponente speichern

  Alt 29. Jul 2008, 07:51
Es geht hierbei sicherlich um Komponenten in fremden Applikationen, right?

Das Zauberwort heißt:
MSDN-Library durchsuchenWindowFromPoint

Sollte es auch in deiner Delphi Hilfe geben.

Die Funktion gibt dir das Handle zurück dem du dann irgendwelchen Input schicken kannst. Post/SendMessage mit WM_Gettext oder ähnliches.

Gruß
Reli


Edit: nochmal ein bisschen Zusatzinput bzw. eine Demo. Brauchst ne Form mit nem Timer drauf (100msec, aktiv).

Delphi-Quellcode:
function GetCaptionAtPoint(CrPos: TPoint): string;
var
  textlength: Integer;
  Text: PChar;
  Handle: HWND;
begin
  Result := 'Empty';
  Handle := WindowFromPoint(CrPos);
  if Handle = 0 then Exit;
  textlength := SendMessage(Handle, WM_GETTEXTLENGTH, 0, 0);
  if textlength <> 0 then
  begin
    getmem(Text, textlength + 1);
    SendMessage(Handle, WM_GETTEXT, textlength + 1, Integer(Text));
    Result := Text;
    freemem(Text);
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  punkt : tpoint;
begin
  if GetCursorPos( punkt ) then
    Edit1.Text := GetCaptionAtPoint( punkt );
end;
  Mit Zitat antworten Zitat