クリップボードの処理は面倒だ。
GlobalAllocなんていう化石の関数を使わなければいけない。
注意すべき点はSetClipboardDataで登録したメモリはユーザが開放してはいけないこと。



Sub PutClipText(buf As *Byte)
Dim bufsiz As Long
Dim hGlob As HANDLE
Dim hMem As HANDLE
bufsiz = lstrlen(buf)+1
hGlob=GlobalAlloc(GHND, bufsiz)
hMem=GlobalLock(hGlob)
lstrcpy(hMem,buf)
GlobalUnlock(hGlob)
OpenClipboard(NULL)
EmptyClipboard()
SetClipboardData(CF_TEXT,hGlob)
CloseClipboard()
End Sub

Function GetClipText()As *Byte
Dim buf As *Byte
Dim bufsiz As Long
Dim hGlob As HANDLE
Dim hMem As HANDLE
OpenClipboard(NULL)
hGlob = GetClipboardData(CF_TEXT)
hMem=GlobalLock(hGlob)
bufsiz = lstrlen(hMem)+1
buf = GlobalAlloc(GPTR,bufsiz)
lstrcpy(buf,hMem)
GlobalUnlock(hGlob)
CloseClipboard()
GetClipText = buf
End Function

'確認
#N88BASIC
Const CLIPTEXT = "平井公彦"
Dim b As *Byte
PutClipText(CLIPTEXT)
b = GetClipText()
Print MakeStr(b)
GlobalFree(b)

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2010年02月02日 07:04