WebBrowserでキーを制御するには?


m  2005-06-25 01:27:08  No: 90684

WebBrowserコントロールがアクティブ時に[Ctrl+N]や[Ctrl+P]を押すと、IEが立ち上がったり印刷ダイアログが出てしまいます。
WebBrowserコントロールではキーの制御はできないのでしょうか?


魔界の仮面弁士  2005-06-25 05:59:52  No: 90685

IDocHostUIHandlerインターフェイスを実装することで対応させるのが一般的かな?
この場合なら、TranslateAcceleratorメソッドで WM_KEYDOWNを受信して、
Ctrl + N の組み合わせだった時に、戻り値に 0(=S_OK)を返せば良いかと。


cwb  2005-06-26 00:24:05  No: 90686

便乗で質問させて下さい。

> IDocHostUIHandlerインターフェイスを実装することで対応・・・

■WebBrowser上で右クリックを禁止するには?
魔界の仮面弁士 2003/11/03(月) 12:54:41
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200311/03110001.txt
にある魔界の仮面弁士 さんのサンプルを参考にするんだと思いますが、

> TranslateAcceleratorメソッドで WM_KEYDOWNを受信して、
> Ctrl + N の組み合わせだった時に、戻り値に 0(=S_OK)を返せば良いかと。

「TranslateAcceleratorメソッド」とは、上記サンプル内の
Private Sub IDocHostUIHandler_TranslateAccelerator()
のことでしょうか?
だとすると、Subプロシージャで、戻り値(S_OK)を返すにはどうしたら
いいんでしょうか?
宜しくお願いします。


魔界の仮面弁士  2005-06-26 02:24:29  No: 90687

> 便乗で質問させて下さい。
できれば便乗は避けて欲しかったです…。(^_^;)

元質問者の環境すら、.NETかVB6なのか書かれていない状況だったので、
そこにきて、さらに環境不明な質問が追加されるとなると、話が
ややこしくなってしまいますので。

で、相手が.NETであるならば、santa martaさんのところが参考になるでしょう。
http://d.hatena.ne.jp/santamarta/20050216

なお、IDocHostUIHandlerインターフェイスの詳細については、SDKで確認してください。
(WebBrowserの場合、細かい機能まできちんと使おうとすると、ある程度以上のCOMの知識が要求されます)

> 「TranslateAcceleratorメソッド」とは、上記サンプル内の
> Private Sub IDocHostUIHandler_TranslateAccelerator()
> のことでしょうか?
私のサンプルを使うなら、たしかに Sub IDocHostUIHandler_TranslateAccelerator です。

ただ、VB6の場合は、私のサンプルを使うよりも、WBCustomizerを使った方が手軽だと思いますよ。
http://support.microsoft.com/kb/183235/
http://msdn.microsoft.com/downloads/samples/internet/browser/WBcustomizer/default.asp

> だとすると、Subプロシージャで、戻り値(S_OK)を返すにはどうしたら
> いいんでしょうか?
Subなので、戻り値という形では返せません。

ただ、そのサンプルを使う場合は、そのまま何も処理しなければ、全てのキー入力が
握りつぶされるので特に問題は無いでしょう。一部のキー入力だけ握りつぶしたい場合は、
その他のキー入力があった時に Err.Raise メソッドを発行すれば、通常のキー処理として
扱われるかと思います。


マロン  2005-06-26 02:27:43  No: 90688

はじめまして。マロンと申します。
私はWebBrowserについてあまり詳しくありませんが、
(実際WebBrowserに関して、こちらでいろいろと質問をさせて頂いてます)
下記のようなコードでまあ目的は達成できるみたいですよ。

   Private CustomWB As WBCustomizer

   Set CustomWB = New WBCustomizer
   With CustomWB
      .EnableAccelerator vbKeyN, vbKeyControl, False     'ctrl+N無効
      .EnableAccelerator vbKeyP, vbKeyControl, False     'ctrl+P無効
      .EnableContextMenus = False                        '右クリック無効
      .EnableAllAccelerators = True                      '上記のすべての設定を有効に  かな?
      Set .WebBrowser = WebBrowser1
   End With

当然DLLが必要になる訳ですが、
http://www.cyf-kr.edu.pl/ftp/softlib/full.html
というサイトの
19980921 S21125
という行から「WBCUSTOM.EXE」をダウンロードされると、その中にサンプルコードやDLLが
含まれてます。
上記のコードは、このサンプルから余分な処理を省いて簡単にまとめたものです。
ご参考まで。


cwb  2005-06-26 05:32:03  No: 90689

混乱させる様な便乗質問をした事をお詫び致します。
今更ですが、私の質問は無視して下さい。


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

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






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