Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Text in die Zwischenablage (https://www.delphipraxis.net/5687-text-die-zwischenablage.html)

OrallY 15. Jun 2003 19:42


Text in die Zwischenablage
 
Wie kann ich mittels der API Text in die Zwischenablage kopieren?

thomasdrewermann 15. Jun 2003 19:50

Hallo OrallY,
du musst als erstes die Bibliothek für Clipboard-Zugriffe in dein Programm einbinden. Diese heisst "Clipbrd".

Also zuerst:
Delphi-Quellcode:
uses Clipbrd;
Ansprechen kann man den Text in der Zwischenablage im Programm dann mit
Delphi-Quellcode:
Clipboard.AsText

MFG
Thomas

OrallY 15. Jun 2003 20:00

Ok, das war zwar nicht über die API und nicht das was ich wissen wollte, aber trotzdem danke für die Antwort :mrgreen: .

Ich habe mir mal folgendes zusammengehackt (einfach die Funktionen, die an die TClipboard-Klasse gekapselt sind):
Delphi-Quellcode:
  procedure SetBuffer(Format: Word; var Buffer; Size: Integer);
  var
    Data: THandle;
    DataPtr: Pointer;
  begin
    OpenClipboard(hWnd); //hWnd ist das Fensterhandle
    try
      EmptyClipboard;
      Data := GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE, Size);
      try
        DataPtr := GlobalLock(Data);
        try
          Move(Buffer, DataPtr^, Size);
          SetClipboardData(Format, Data);
        finally
          GlobalUnlock(Data);
        end;
      except
        GlobalFree(Data);
        raise;
      end;
    finally
      CloseClipboard;
    end;
  end;

procedure SetClipboardText(aText: PChar);
begin
  SetBuffer(CF_TEXT, aText^, Length(aText) + 1);
end;
Nur funktioniert das nicht so 100 pro. Wenn ich beim Debugen im Editor Einfüge, klappts, doch bei allen anderen Programmen ist immer noch das alte Clipboard aktiv. Wie kommts?

/edit: Habe gerade den Fehler gefunden. Direkt nach OpenClipboard muss zuerst EmptyClipboard aufegerufen werden. Nähers in der PSDK.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz