• ベストアンサー

WebbrowserでのPFキー取得

WebbrowserでのPFキー取得 vb.netでwebbrowserを使用してWebを表示しています。 この画面で押されたPFキーなどを取得することは可能なのでしょうか? FORMのkeydownなどでは取得してくれませんでした。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • rk_les
  • ベストアンサー率63% (23/36)
回答No.8

おはようございます。 こちらも説明不足でした・・・ >一応補足ですがFormでPrtScrは取得できますよ。 正しくはForm上にWebBrowserを貼り付けた場合でもFormでPrtScrは取得できます。 です。一応実験済みですが動作が不安定でプログラムとしては役に立たない状態でした・・・きっともっといい方法があるのでしょうがorz さて、本題ですが・・・ 全てのPFキーなどを制御するということで・・・IDocHostUIHandlerで~などを考えていまして・・・しかしこれだとCOMの知識もある程度分からないと話になりません。 なんとなくWebBrowserのプロパティ見てたらこんなのがありました。 WebBrowserShortcutsEnabled これはAcceleratorKeyをWebBrowserで有効にするかどうかを指定できるプロパティです。 何で今まで気づかなかったのかはわかりませんが・・・とりあえずは一発で全て無効にできます。勿論previewkeydownでキーの取得はできるのでPFキーに処理を与えることもできます。(プロパティの名前をWebBrowserAcceleratorKeyEnabledにしてほしかった・・・ 一応自分が考えた方法で役に立つかは分かりませんが乗せておきます。 キーイベントを取得するためにIDocHostUIHandlerとIOleClientSiteを実装したクラスを作成し、 IDocHostUIHandler.TranslateAcceleratorメソッドでWM_KEYDOWNを受信すれば操作できると考えました。 ご参考までに

papope
質問者

お礼

ご回答ありがとうございます。 上記方法でも、うちの環境ではPrintScreenキーが効いてしまいました。 八方ふさがりですね。 特定のキーはOSが先にフックしてしまうことがあると聞いた覚えがあるので それが影響しているのでしょう(不確定ですが) COMを使用すれば、これを回避できそうですが、面倒ですね^^; Inputmanというソフトでもこの問題をクリアできるはずなのですが、高いものですし・・・・・。 COMを含めて検討してみます。 ご親切にお付き合いいただきありがとうございました。 いろいろと助かりました。

その他の回答 (7)

  • rk_les
  • ベストアンサー率63% (23/36)
回答No.7

無効なんですねw てっきり押した際に何かほかの動作もさせるものだと思っていました・・・ 一応補足ですがFormでPrtScrは取得できますよ。 RemoveHandlerを使えばいいと思います。 調べればサンプルコードはたくさん出てくると思います。

papope
質問者

補足

ご回答ありがとうございます。 説明不足でした。 通常のFormでは取得できますが、Webbrowserを使用している場合 Formのイベントでは取得ができない状態です。 (webbrowser以外のフォームでは当然、取得できます) 教えていただきましたとおり、webbrowser_previewkeydownでのみ 取得できる状態ですので、RemoveHandlerも駄目ではないでしょうか?

  • rk_les
  • ベストアンサー率63% (23/36)
回答No.6

おはようございます。 申し訳ありません。またもや説明不足ですね・・・ KeyUpはFormのイベントの方です。 一つ補足で教えてほしいことがあります。 実際PrintScrで何がしたいのですか?そこらへんを明記していただければもう少し的確なアドバイスができると思います。 よろしくお願いします。

papope
質問者

補足

ご回答ありがとうございます。 ご説明不足でした。 FormイベントのKeyイベントは効かないことは実証済みでした。 ブラウザでPrintScreenキーやPFキーなどを、無効にしたいというのが目的です。 (効かなく見えるようにするだけです。いろいろと手段があるのはわかっていますが) よろしくお願いいたします。

  • rk_les
  • ベストアンサー率63% (23/36)
回答No.5

すみません…説明不足でしたね。 printScrはkeydownではなくup時じゃ無いと取得出来ません。

papope
質問者

お礼

何度もありがとうございます。 ご指摘の通りですね。 しかしwebbrowser.keyupというのがあるようですが 使用法がわかりません。 参考サイトなど教えていただけないでしょうか?

  • rk_les
  • ベストアンサー率63% (23/36)
回答No.4

勿論出来ます。 keys.printscreen みたいなのがあると思います。

papope
質問者

お礼

ご回答ありがとうございます。 ありました・・・ けど、フックできないみたいです。 他のキーはフックできるんですけどPrintScreenはフックしてくれません。 OSが先にフックしてしまうから駄目なんですかね? Inputman使用すればフックできるのでしょうか? ありがとうございました。

  • rk_les
  • ベストアンサー率63% (23/36)
回答No.3

一応ですがサンプルコードも乗せておきますね。 Private Sub WebBrowser1_PreviewKeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles WebBrowser1.PreviewKeyDown If e.KeyCode = Keys.F1 Then MessageBox.Show(e.KeyCode.ToString() + "押しました") e.IsInputKey = True End If End Sub

  • rk_les
  • ベストアンサー率63% (23/36)
回答No.2

WebBrowserのPreviewKeyDownイベントを使用してみてください。

papope
質問者

お礼

ご回答いただきまして、ありがとうございます。 できました! イベントを探したつもりでしたけど、探し足りませんでした。 申し訳ありません。 ありがとうございました。 もう一点、質問があるのですが、このイベントでPrintScreenキーって取れるのでしょうか? お分かりであれば、よろしくお願いいたします。

  • chuchuo
  • ベストアンサー率45% (99/217)
回答No.1

System.Windows.Forms.KeyEventArgs で解決です。 下記にサンプルコードを記載しておきます。 Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown If e.KeyCode = Keys.F1 Then run1() End If If e.KeyCode = Keys.F2 Then run3() End If If e.KeyCode = Keys.F3 Then run4() End If End Sub

papope
質問者

補足

ご回答ありがとうございます。 私の書き方が悪かったのだと思いますが、お教えいただいた方法で行っても できなかったのです。 処理を見ても同じ処理になっています。 他に設定などあるのでしょうか? お願いいたします。

関連するQ&A

  • WebBrowserにてCSVを取得したい

    WebBrowserにてCSVを取得したい vb.net(VS2008) にて、WebBrowserを利用して指定のURLからCSVをダウンロードしたいのですが、ダウンロードするダイアログまたはエクセルがWebBrowser内に表示されてしまいます。 単純に、WebBrowserに表示して、DocumentCompleted 時にDocumentとして取得したいのです。 もしくは、ファイル名を予め指定してダウンロードでも問題ありません HttpWebRequest,WebClientによる取得は、 SSLクライアント認証などの公開キーに基づく認証方式が必要なサイトのため、できませんでした。 ダイアログ、エクセルが起動せずに取得出来る方法がありましたら、教えていただけないでしょうか? よろしくお願いします。

  • webbrowserでのjavascriptを含むソース取得

    webbrowserでのjavascriptを含むソース取得 お世話になっております。 VB 2005を利用しています。 webbrowserを用いてHTMLソースの表示をしようと、 WebBrowser1.Document.Body.OuterHtml と記述したところ、javascriptのソースが表示されません。 同じサイトをIEのソースで表示すると問題なく表示できます。 HttpWebRequest を用いたソースの取得方法はわかるのですが、 事情があって、webbrowser上から行いたいのです。 よろしくアドバイスの程お願いいたします。

  • WebBrowserでAタグ取得

    VB9でWebBrowserを使ってホームページにアクセスしているのですが、 そのページにある全てのAタグのURLとAタグの表示テキストを取得したいのですが、どのようにすれば良いでしょうか? WebBrowser1.Navigate(URL) ...待ち 受信完了 ここまではできています。 この後のAタグを取得するコードが知りたいです。

  • WebBrowserコントロールでExplorerのようなものを作りたいのですが困っています

    VB.NET2008にて、開発中です。 WebBrowserコントロールを使用してExplorerを作っているのですが、たとえば WebBrowser1.Navigate("C:\Users\" + Environment.UserName + "\Desktop") とすることによってコントロール上にデスクトップにあるファイルが表示されますよね? そこで、表示されたファイルのうち1つをを選択し、そのファイル(もしくはディレクトリ)のフルネームを取得したいのですが、どうもやり方がわかりません。 どなたかこの方法を知っている方、いらっしゃいませんでしょうか?

  • WebBrowserでPDF表示でのトラブル

    WindowsXP、VB6.0にてWebBrowserを使用してPDFファイルを画面に表示 していますが、画面にはしっかり表示され問題は無いのでですが、 プログラムを終了しても、タスクマネージャーに「AcroRd32.exe」が 残ったままになっています。 WebBrowserの使用方法がおかしいのでしょうか? WebBrowser.Navigateで表示指定しています。 どなたかわかる方教えて下さい。

  • WebBrowserでHtmlを取得

    WebBrowserでHtmlを取得する方法をおしえてください フォーム上に、WebBrowser1、TextBox1、Button1を配置しています。 TextBox1にHtmlを表示し、Button1は、WebBrowser1に表示している WEBページを更新します。 やりたい事  (1)フォームを開いた時に、URLで指定したWEBページを表示させ   TextBox1にHtmlを表示させる。  (2)Button1をクリックした時、表示しているWEBページを更新する。   更新後のHtmlをTextBox1に表示させる。  (3)TextBox1の表示が完了したらHtmlを処理する。(未着手) 現在、(1)は動作するのですが、(2)が動作しません(TextBox1のHtmlが更新されない) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load WebBrowser1.Navigate(オッズURL):webcompflag = False Do While (webcompflag = False) System.Windows.Forms.Application.DoEvents() System.Threading.Thread.Sleep(10) Loop TextBox1.Text = WebBrowser1.Document.Body.InnerHtml End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click TextBox1.Text = "" If Not WebBrowser1.Url.Equals("about:blank") Then WebBrowser1.Refresh() : webcompflag = False Do While (webcompflag = False) System.Windows.Forms.Application.DoEvents() System.Threading.Thread.Sleep(10) Loop TextBox1.Text = WebBrowser1.Document.Body.InnerHtml End Sub 何がいけないのか分かりません よろしくお願いします。

  • WebbrowserよりHTMLのValue値を取得したい

    こんばんは Webbrowserに表示されているページから <input type="hidden" name="regist_id" value="123456789"> というう箇所のValueの値123456789を取得しLabel1.Textに表示させたいのですが、 WebBrowser1.Document.getElementsByName("regist_id").Item(0).Value = Label1.Text としてみたのですが無理でした。 label1は空白になるだけでした。 どこが間違っているのでしょうか? VB2005で製作しております。

  • 選択した文字をクリップボードへコピーする方法

    VB.NETを使用しています。 FormにWebBrowserを貼り付け、Webページを表示させています。 そのWebページの文字の一部を選択して、この選択した文字をクリップボードにコピーしたいのですが、 選択した文字の取得方法がわかりません。 ヒントでも結構です。どなた様かよろしくご教授下さい。

  • 新しいページをwebbrowserに表示したいんです。

    初めて質問します、1ヶ月ほど前からVB 2008を使用し、勉強しているのですが、今回どう調べてもわからないことがありましたので、質問させていただきます。 webbrowserを使用し、あるサイトを表示しています。 そのサイトの中のリンクをクリックすると、新しいウィンドウがIEで立ち上がってしまいます。 この新しいウィンドウをwebbrowser1、もしくはwebbrowser2に表示させる方法はありますか? かなり調べてみたのですが、vb6.0の情報が多く、そのコードをvb2008に直す事が出来ませんでした。 ご存知の方がいらっしゃれば、お力を貸してください。 よろしくお願いいたします。

  • VB.NET2008を使用しています。

    VB.NET2008を使用しています。 ----- HTML ----- <input type="submit" name="Enter" value="ボタン"> ----- END ------ ----- 構成@VB ----- Form1 Button1 <- これをクリックしてWebBrowserのボタンを押したことにする WebBrowser1 ----- END ----- 上のようなボタン(HTMLのもの)を VB.NETのButton1を押すとWebBrowser1に表示されているWEBページのボタンを 押したようにしたいのですがどのようにすれば実現できますか? よろしくお願いします。

専門家に質問してみよう