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

解決


vbクリップ  2005-09-08 20:32:57  No: 92137

いつもお世話になっています。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 20:36:15  No: 92138

忘れてました。

Windows 2000
VB 6.0 SP5.0
です。


特攻隊長まるるう  2005-09-08 20:47:45  No: 92139

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


K.J.K.  2005-09-08 20:58:54  No: 92140

普通のローカライズされた文字列ならば、
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 22:31:30  No: 92141

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

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加