WebBrowserコントールを使用していますが、Ctrl+Pキーを押下した際の印刷ダイアログを表示させないようにしたいのですが、どのようにすればよいのでしょうか?だれか教えてください。
IDocHostUIHandler_TranslateAccelerator
にて、Ctrl+Nキー(新規ウィンドウを開く)をキャンセルすることはできましたが、同じやりかたでは印刷ダイアログが表示されるのを防げませんでした。
何をお使いでしょう?
VB6.0なら、フォームにKeyDownイベントで拾ってやれば、大丈夫ですけど・・・。
FormのKeyPreviewプロパティをTrueにした後、下記のようなコーディングを行いましたが、ダメでした。コーディング方法が悪いのでしょうか?
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If TypeOf Screen.ActiveControl Is WebBrowser Then
'MsgBox "KeyCode=" & KeyCode & " Shift=" & Shift
If (Shift Or vbCtrlMask) _
And (KeyCode = vbKeyP) Then
'MsgBox "KeyCode=" & KeyCode & " Shift=" & Shift
Shift = 0
KeyCode = 0
End If
End If
End Sub
すみません、書き忘れました。
VB6.0
です。
ちなみに、ヘルプは読まれました?
サンプルが載ってますので、ご参考までに。
それと、提示して頂いたコードから二点ほど。
>'MsgBox "KeyCode=" & KeyCode & " Shift=" & Shift
メッセージボックスはコメント化してますけど、実際はシングルクォテーションは外してますよね?
>Shift Or vbCtrlMask
・・・これは?
Orじゃなくて、Andではないですか?
連続レスごめんなさい。
ヘルプから抜粋しました。念のため。
>該当するキーが押された場合は、引数shiftとビットマスクをAnd 演算子で結合した値が 0 より大きくなります。
>次の例に示すように、該当する補助キーが押されたことが分かるような名前の一時的な整数変数に、比較結果を保存してください。
>ShiftDown = (Shift And vbShiftMask) > 0
以上です。
すみません、けっきょくKeyDownでは解決できませんでした。(というか良く分からないまま、あきらめてしまいました。)
が、IDocHostUIHandler_TranslateAcceleratorの方で解決できました。
影さん、ご丁寧におしえていただきましてありがとうございました。
ツイート | ![]() |