Thema: Delphi Clipboard Fehler

Einzelnen Beitrag anzeigen

dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#14

Re: Clipboard Fehler

  Alt 1. Apr 2008, 21:14
Delphi-Quellcode:
TfMain = class(TForm)
  private
    hNextViewer: DWORD; // Handle des nächsten Kettenmitglieds
  protected
    procedure WMChangeCBChain(var Msg: TMessage); message WM_CHANGECBCHAIN; // wird aufgerufen wenn sich die Kette verändert
    procedure WMDrawClipboard(var Msg: TMessage); message WM_DRAWCLIPBOARD; // wird aufgerufen wenn sich das Clipboard verändert
  end;


  // FormCreate:
  hNextViewer := SetClipBoardViewer(Handle); // Dich in der Kette anmelden und das nächste Mitglied sichern

  // FormDestroy:
  ChangeClipBoardChain(Handle, hNextViewer); // Dich von der Kette ausklinken und dem Folgemitglied bescheid geben


procedure TfMain.WMChangeCBChain(var Msg: TMessage);
begin
  if Msg.WParam = hNextViewer then // wenn die Nachricht von dem Folgemitglied kommt (d.h. er sich aus der Kette ausklinkt)
    hNextViewer := Msg.lParam // das nächste Folgenmitglied sichern
  else if hNextViewer <> 0 then // ansonsten wenn es ein Folgemitglied gibt
    SendMessage(hNextViewer, MSG.Msg, MSG.wParam, MSG.lParam); // die Nachricht weiterleiten
end;

procedure TfMain.WMDrawClipboard(var Msg: TMessage);
var
  hClipbrdObj: THandle;
  pClipbrdObj: Pointer;
begin
  OpenClipboard(Handle); // Clipboard öffnen
  hClipbrdObj := GetClipboardData(CF_TEXT); // schauen ob Text drinnsteht -> Handle
  if hClipbrdObj <> 0 then // wenn ja
    begin
      pClipbrdObj := GlobalLock(hClipbrdObj); // einen Zeiger auf die Daten ausrichten und den bereich Sperren
      if chk1.Checked then
        ClipboardChanged(PChar(pClipbrdObj)); // etwas mit den Daten machen
    end;
  GlobalUnlock(DWORD(pClipbrdObj)); // Sperrung aufheben
  GlobalFree(hClipbrdObj); // Den Speicherbereich freigeben und Handle ungültig machen
  CloseClipBoard; // Clipboard schließen
end;
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat