右クリックのコピー文字列の取得

解決


vbクリップ  2005-09-08 11:32:57  No: 92137  IP: [192.*.*.*]

いつもお世話になっています。vbクリップです。

コードでアクティブになっているメモ帳の文字列を
すべて選択して、右クリックでコピーさせたときの
コピーした文字列をVB上で取得したいんですが、
どうしたらいいんでしょうか?

クリップボードから取得できると思い、サンプルを
捜してやってみたんですが、取得できません。
ちなみにクリップボードのサンプルソースは
Const FormatName = "Sample"
Dim wFormat As Long
Dim hMem As Long
Dim p As Long
Dim data() As Byte
Dim Size As Long

wFormat = RegisterClipboardFormat(FormatName)

If OpenClipboard(ByVal 0&) Then
   hMem = GetClipboardData(wFormat)
   
   
   If hMem Then
      Size = GlobalSize(hMem)
      p = GlobalLock(hMem)
      ReDim data(0 To Size)
      MoveMemory VarPtr(data(0)), p, Size
      GlobalUnlock hMem
   End If
   CloseClipboard
End If
です。
クリップボードから他取得方法は無いと思うんですが、
何か、手順が違うのかうまくいきません。
宜しくお願いします。

編集 削除
vbクリップ  2005-09-08 11:36:15  No: 92138  IP: [192.*.*.*]

忘れてました。

Windows 2000
VB 6.0 SP5.0
です。

編集 削除
特攻隊長まるるう  2005-09-08 11:47:45  No: 92139  IP: [192.*.*.*]

む???よく分からないけど…
[VB6.0]
Private Sub Command1_Click()
    MsgBox Clipboard.GetText
End Sub

編集 削除
K.J.K.  2005-09-08 11:58:54  No: 92140  IP: [192.*.*.*]

普通のローカライズされた文字列ならば、
Clipboard.GetText(vbCFtext)
で十分でしょう。RTF形式であるのならばvbCFRTFが使えます。

上記のフォーマットではないテキストを扱いたいのであれば、
API関数を使うことになるでしょう。しかし、それでも、
既定のフォーマットに関してはRegisterClipboardFormatを
用いる必要はありません。
# そもそも"Sample"というフォーマット形式はどこから出たのでしょうか?

CF_LOCALEを絡めたCF_TEXT形式、CF_OEMTEXT、CF_UNICODETEXT
などのフォーマット値は定数になっています。

IEなどからHTML形式のデータを受け取りたい場合は、
"HTML Format"をRegisterClipboardFormatに渡して、その戻り値
を使うことになるでしょう。

編集 削除
vbクリップ  2005-09-08 13:31:30  No: 92141  IP: [192.*.*.*]

特攻隊長まるるうさん、K.J.K.さんありがとうございました。
Clipboard.GetTextでいけました。

># そもそも"Sample"という...
まったく理解しないまま使用していました…(汗

助かりましたありがとうございました。

編集 削除