Ich vermute einmal, dass das Problem die Konvertierung als Bitmap ist, denn Paint legt in die Zwischenablage unter anderem CF_DIB und PNG ab, aber nicht CF_Bitmap. Wenn du also CF_Bitmap abrufst, muss Windows den Inhalt der Zwischenablage zuerst konvertieren.
Aber das Programm will unbedingt meinen PC reparieren und ist von dieser Idee nicht abzubringen.
Solch eine Funktion hat das Tool gar nicht. Was meinst du damit? Hast du vielleicht auf einen Werbebanner auf der Seite geklickt statt auf
den Download?
Gibt es keine Möglichkeit, mit Delphi an die Binärdaten heranzukommen?
Doch, aber dann hast du auch wirklich nur die reinen Bildinformationen:
Delphi-Quellcode:
function GetClipboardDIBData(const ATarget: TMemoryStream): Boolean;
var
ClipboardHandle: THandle;
Src: Pointer;
Size: Integer;
begin
if Clipboard.HasFormat(CF_DIB) then
begin
OpenClipboard(0);
try
ClipboardHandle := GetClipboardData(CF_DIB);
if ClipboardHandle <> 0 then
begin
Src := GlobalLock(ClipboardHandle);
try
Size := GlobalSize(ClipboardHandle);
if Size > 0 then
begin
ATarget.WriteBuffer(Src^, Size);
ATarget.Position := 0;
Result := True;
end
else
Result := False;
finally
GlobalUnlock(ClipboardHandle);
end;
end
else
Result := False;
finally
CloseClipboard;
end;
end
else
Result := False;
end;
procedure TForm290.FormCreate(Sender: TObject);
var
Data: TMemoryStream;
begin
Data := TMemoryStream.Create;
try
if GetClipboardDIBData(Data) then
Data.SaveToFile('c:\temp\clipboarddata.bin');
finally
Data.Free;
end;
end;