Program-07 クリップボードから文字列を取得する
Q 文字列はコピーするとクリップボードに格納されます。その格納された文字列を取得したいのですが、その方法が知りたいです。
A GetClipboardData関数などを使います。
どう使う?
Dim hMem As HGLOBAL,lpString As BytePtr,strData As String
OpenClipboard(NULL)
hMem=GetClipboardData(CF_TEXT)
lpString=GlobalLock(hMem)
strData=MakeStr(lpString)
GlobalUnlock(hMem)
CloseClipboard()
MsgBox NULL,strData,"クリップボードの文字列"
少し使う関数が多いですね。
このコードで、クリップボードの文字列を取得することが可能です。
まず、OpenClipboard関数は、クリップボードをプログラムで扱えるようにする関数です。
次のGetClipboardData関数では、実際にクリップボードの文字列を取得することになりますが、「メモリオブジェクト(説明は省略)」という形で文字列が返却されるため、文字列を使えるようにするためにGlobalLock・GlobalUnlock関数を使っています。
開いたものは閉じておく。最後のCloseClipboard関数はクリップボードの後始末の役割を果たします。
このプログラムを改造すると、フォトレタッチソフトなどでコピーされたビットマップをウィンドウに描画することなども可能になります。
ヘルプやMSDNとにらめっこしてみてください。