- ベストアンサー
VB6でプリントスクリーンを無効にする
- VB6でプリントスクリーンを無効にする機能を作成する方法を説明します。
- ハンドルを使用してフックを正常に定義し、KeyBoardProcでプリントスクリーンキーを捕まえて戻り値を1に設定します。
- しかし、クリップボードに画像が生成されてしまう問題が発生しています。画像が生成されないようにするためには、どのような設定が必要かを教えてください。
- みんなの回答 (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
お礼
回答ありがとうございました 本当はKeyそのものを受け付けない様にしたかったのですが clipboard.clearでも、目的を達成できたので、 採用させていただきました。