Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
Delphi 2007 Professional
|
Re: Clipboard Fehler
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!
|
|
Zitat
|