お世話になります
VB6でプリントスクリーンを無効にする機能を作成しているのですが、
hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyBoardProc, 0&, App.ThreadID)
フックはたぶん正常に定義できているようで、
KeyBoardProcでプリントスクリーンキーを捕まえて「44」でブレイクも脹れています。
ここで戻り値「1」を返しているのですが、クリップボードに画像が生成されてしまいます。
画像が生成されない様にするには、何が間違っているのかおしえていただけないでしょうか?
'*********************************************************************
' フックプロシジャー
'*********************************************************************
Public Function KeyBoardProc(ByVal nCode As Integer, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim ret As Long
If nCode < 0 Then
KeyBoardProc = CallNextHookEx(hHook, nCode, wParam, lParam)
Exit Function
End If
Select Case wParam
' Print Screen
Case 44
KeyBoardProc = 1
Exit Function
End Select
KeyBoardProc = CallNextHookEx(hHook, nCode, wParam, lParam)
End Function
No.1ベストアンサー
- 回答日時:
これ(参照URLの一番上の回答)でできているけど、何が違うのか良くわかりません。
unhookを呼び出す際にclipboard.clearしても同じ状況でしょうか?
Private Declare Function SetWindowsHookEx _
Lib "user32" Alias "SetWindowsHookExA" ( _
ByVal idHook As Long, _
ByVal lpfn As Long, _
ByVal hmod As Long, _
ByVal dwThreadId As Long) As Long
Private Declare Function CallNextHookEx Lib "user32" ( _
ByVal hHook As Long, _
ByVal nCode As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32" ( _
ByVal hHook As Long) As Long
Private Declare Sub CopyMemory _
Lib "kernel32" Alias "RtlMoveMemory" ( _
pDest As Any, _
pSource As Any, _
ByVal cb As Long)
Private Type KBDLLHOOKSTRUCT
vkCode As Long
scanCode As Long
flags As Long
time As Long
dwExtraInfo As Long
End Type
Private Const HC_ACTION = 0
Private Const VK_SNAPSHOT = &H2C
Private Const WH_KEYBOARD_LL = 13&
Private hKeyb As Long
Public Function KeybCallback(ByVal Code As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Static udtHook As KBDLLHOOKSTRUCT
If (Code = HC_ACTION) Then
'Copy the keyboard data out of the lParam (which is a pointer)
Call CopyMemory(udtHook, ByVal lParam, Len(udtHook))
If udtHook.vkCode = VK_SNAPSHOT Then
KeybCallback = 1
Exit Function
End If
End If
KeybCallback = CallNextHookEx(hKeyb, Code, wParam, lParam)
End Function
Public Sub HookKeyboard()
UnhookKeyboard
hKeyb = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf KeybCallback, App.hInstance, 0&)
End Sub
Public Sub UnhookKeyboard()
If hKeyb <> 0 Then
Call UnhookWindowsHookEx(hKeyb)
hKeyb = 0
End If
End Sub
参考URL:http://www.vbforums.com/showthread.php?372390-RE …
回答ありがとうございました
本当はKeyそのものを受け付けない様にしたかったのですが
clipboard.clearでも、目的を達成できたので、
採用させていただきました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) select caseの入れ子 3 2023/03/08 18:48
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) ワークシート内を検索 1 2022/12/19 23:46
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vb.net 画像の透過について
-
UWSCの画像認識と条件分岐につ...
-
UWCSでのランダムクリック入力...
-
画像のビット数を変更する方法
-
Excel ユーザーフォームで表示...
-
画像をランダムに表示して名前...
-
複数枚画像の合成
-
MFCでCImageListに画像追加失敗
-
DXライブラリの、マウスを使っ...
-
jqueryスライダーを2段でスライ...
-
画像中の一番手前の物体をエッ...
-
画像の2次元フーリエ変換の結...
-
uwscの画像認識の不具合だと思...
-
jpgファイルの内容を比較したい...
-
画像をロックしたい
-
[ASP.NET]Imageコントロールで...
-
C# 画像のトリミング処理
-
VB6でプリントスクリーンを無効...
-
「using Windows」でエラーが出る
-
VC++6.0でGDI+利用してメモリリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel ユーザーフォームで表示...
-
uwcs のマクロで画像認識をして...
-
背景画像の繰り返しについて
-
jqueryスライダーを2段でスライ...
-
「using Windows」でエラーが出る
-
【EXCEL VBA】ダブルクリックで...
-
画像のビット数を変更する方法
-
EXCEL VBA 複数のImageコントロ...
-
スマホでサイトの画像を長押し→...
-
【WPF】画像の切り替え
-
vb.net 画像の透過について
-
同じ画像を複数回表示させる
-
画像が分割されて切り替わる、...
-
VBA シート毎に画像挿入
-
UWSC 画像判定と条件分岐について
-
UWSC 画像認識で条件分岐
-
UWSCの色判定
-
VBAのユーザーフォームのイメー...
-
UWSCの画像認識と条件分岐につ...
-
gif 画像上の ボタンに リン...
おすすめ情報