Ich habe mit
Delphi-Quellcode:
Image1.Picture.Bitmap.SaveToClipboardFormat(myFormat, hData, aPalette);
Clipboard.SetAsHandle(myFormat, hData);
ein Bitmap in der Zwischenablage gespeichert.
Ein Zugriff auf
Delphi-Quellcode:
hData // direkt z.B. vor Clipboard.SetAsHandle
bzw.
hData := Clipboard.GetAsHandle(CF_BITMAP)
bzw.
hData := Clipboard.GetAsHandle(myFormat)
führt ordnungsgemäß zu einem gültigen DIB-
Handle, was anderweitig auch korrekt weiterverarbeitet werden kann. Jetzt soll man eigentlich (lt. diversen Webseiten) per
GlobalLock(hData)
auf den Speicherbereich (DIB-Stream) zugreifen können, um beispielsweise an den BITMAPINFOHEADER heranzukommen.
Dies führt aber stets zu einem Fehler "Das
Handle ist ungültig." / "The
handle is invalid."
Bei allem Suchen bin ich nur auf folgende
Seite gestoßen, wo dieser Fehler auch beschrieben wird, was mir aber nicht direkt weiterhilft.
Warum das alles: Ich möchte in den Zwischenablagedaten die Auflösung der DIBs einfügen (biXPelsPerMeter und biYPelsPerMeter) um beim Einfügen die richtigen Abmaße auch bei Auflösungen ungleich 72 dpi zu bekommen. IrfanView kann die Auflösung setzen. Beim Import ins Office wird dann die richtige Größe verwendet. Vieleicht gibt es auch eine andere Lösung.