AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Sendmessage und Zwischenablage Problem
Thema durchsuchen
Ansicht
Themen-Optionen

Sendmessage und Zwischenablage Problem

Ein Thema von Biohazard · begonnen am 20. Jun 2003 · letzter Beitrag vom 20. Jun 2003
Antwort Antwort
Biohazard

Registriert seit: 20. Mär 2003
46 Beiträge
 
#1

Sendmessage und Zwischenablage Problem

  Alt 20. Jun 2003, 09:48
Hallo,
habe da ein kleines Problem. Ich möchte, wenn ich den HotKey drücken den markierten Text aus einer anderen Anwendung an mein Prog übergeben. (Später soll sich das Wort noch selber markieren).
Dabei gehe ich so vor, daß zu diesem Zeitpunkt das Handle ermittelt wird das unter dem Mousecursor ist. Der Rest wird über die Zwischenablage erledigt. Innerhalb meines Programmes funktioniert es aber mit anderen Progs nicht, obwohl ich das Handle der jeweiligen Komponente habe.
Es wird erst gar nichts in die Zwischenablage kopiert. Warum nicht? Kann mir da jemand helfen.

Hier mal der Code zur Hilfe:

Code:
procedure TForm1.WMHotKey(Var Msg: TWMHotkey);
var rPos: TPoint;
  hWnd: THandle;
  a:integer;
  b:string;
begin
  case Msg.IdHotKey of
    ID:
    begin
    GetCursorPos(rPos);
    hWnd := WindowFromPoint(rPos);
    SendMessage(hwnd, WM_COPY, 0, 0);
    edit1.Text:='';
    b:=edit1.text ;
    han:=findwindow(0,'Hossa');
    hwnd2:=findwindowex(han,0,'TEdit',PAnsiChar(b));
    SendMessage(hwnd2, WM_PASTE, 0, 0);
         end;
    ID+1:
         begin
           //.....
         end;
  end;
  inherited;
end;
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: Sendmessage und Zwischenablage Problem

  Alt 20. Jun 2003, 11:44
Zitat von Biohazard:
Es wird erst gar nichts in die Zwischenablage kopiert. Warum nicht?
Weil du nichts markierst:
Zitat:
Delphi-Quellcode:
hWnd := WindowFromPoint(rPos);
SendMessage(hwnd, WM_COPY, 0, 0);
Wenn das ausgewählte Fenster z.B. auch ein Editfeld ist, dann solltest du erst mal den vorhandenen Text selektieren:
SendMessage(hWnd,EM_SETSEL,0,-1); dann kannst du auch was kopieren!
  Mit Zitat antworten Zitat
Biohazard

Registriert seit: 20. Mär 2003
46 Beiträge
 
#3
  Alt 20. Jun 2003, 12:34
Innerhalb meines Progs geht es. will ich aber von einem anderen Prog den Text eines Feldes geht es nicht.

Kann das evtl hiran liegen:

Code:
procedure TForm1.FormCreate(Sender: TObject);
var ok: longbool;

begin
  i:=0;
  ok:=RegisterHotKey(Form1.Handle, ID, MOD_Alt, Ord('Q'));
  if not ok then showmessage('Fehler');
  ok:=RegisterHotKey(Form1.Handle, ID+1, MOD_control, vk_f1);
end;
Irgendwie stört das form1. Aber ich weiß nicht wie das sonst funzen soll.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz