Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

AW: Zwischenablage in externes Programm benutzen

  Alt 28. Jan 2011, 17:10
Dann scheint hier möglicherweise ein Bug vorzuliegen.
Eine Anwendung, die mit dem Clipboard arbeiten möchte muss OpenClipboard() aufrufen, seine Arbeit tun und dann CloseClipboard() aufrufen.
OpenClipboard() und CloseClipboard() werden automatisch von der VCL aufgerufen; man braucht da selbst gar nichts tun.
Wenn nun in deinem externen Programm der Aufruf von CloseClipboard() fehlen würde, dann wäre das ein Bug.
Eine Anwendung, die nur OpenClipboard() aufruft, würde die Zwischenablage für alle anderen Programme blockieren.

Mit der Funktion GetClipboardOwner() kann man den Besitzer des Clipboards abfragen (genauer man bekommt das Fensterhandle).

Delphi-Quellcode:
var
  s : string;
  hwnd:THandle;
begin
  try
    s := clipboard.AsText; // Zwischenablage lesen
    s := '*** '+s+' ***'; // Text verändern
    clipboard.AsText := s; // zurück Zwischenablage schreiben
  except
    on E:Exception do
    begin
      // Besitzer des Clipboard ermitteln
      hwnd := GetClipboardOwner;
      ShowWindow(hwnd, SW_SHOW); // Fenster anzeigen
      E.Message := E.Message + #13#10+Format('Window-Handle %x', [hwnd]);
      raise;
    end;
  end;
end;
Andreas

Geändert von shmia (28. Jan 2011 um 17:15 Uhr)
  Mit Zitat antworten Zitat