クリップボードからデバイスに依存しないビットマップを取得しようとしています。これは、.NET Frameworkに組み込まれているClipboard.GetData関数を介して実行できることをよく知っていますが、非常にバグがあるため(Web上の多くの場所で文書化されているように)、APIのみを使用したいと思います。
私は動作する次のコードを書きました。
//i can correctly cast this to a MemoryStream
MemoryStream ms = Clipboard.GetData("DeviceIndependentBitmap") as MemoryStream;
しかし、私はそれをAPIで使用したいと思います。これは、何らかの方法でストリームを指すポインター(IntPtr)を返すだけです。UnmanagedMemoryStreamを調べましたが、を正しく変換する方法を理解できていませんIntPtr
。
これが私のAPIコードです(フォーマットが引数として設定されているGetClipboardData APIを使用)。CF_DIB
IntPtr p = GetClipboardData(8);
//what do I do from here to get a MemoryStream from this pointer?
私は少し混乱しています。私はすでにそれを自分で調べましたが、何か役に立つものを思い付くことができませんでした。