WebBrowserでマウスホイールを機能させるには?

解決


まこと  2007-06-10 09:03:37  No: 26572

いつもお世話になります。

今,プログラム作成の練習としてブラウザを作成しているのですが,
不明な点が出てきました。
以下の点について,どなたかご存知でしたらお教えください。

①TWebBrowserで,画像が張られているホームページを表示させます。
②表示させるページは,
    http://news.google.co.jp/nwshp?ie=UTF-8&oe=UTF-8&hl=ja&tab=wn
  等,縦のスクロールバーが表示されるページです。
  (ちなみに上記のURLはgoogleのニュースサイトです。)
③この時点で,マウスホイールによるスクロールが利いていることを確認します。
④このページの画像をマウスで右クリック,「名前を付けて画像を保存」
  をクリックし,画像の保存ダイアログを出します。(画像は保存しなくてもかまいません。)
⑤上の④の操作を行った後は,なぜかマウスホイールが利かなくなっています。

この⑤において,マウスホイールを利くようにしたいと思っています。
ですが,今のところ,とるべき手段が全く思いつきません。
よろしくお願いいたします。

※WebBrowser上にフォーカスがあれば,マウスホイールが正常に動作することはわかっていました。
  なので,WM_ACTIVATEのメッセージを捕まえて,保存ダイアログ→ブラウザのフォーム
  へフォーカスが移るタイミングでWebBrowserへフォーカスを戻してやれば解決
  できるかと思い,ApplicationEventsコンポーネントのOnMessageイベントも
  使用してみましたがWM_ACTIVATEのメッセージは飛んでいないようでした。

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
  ・
  ・
  ・
begin
  if (Msg.message = WM_Activate) then
    Label1.Caption := 'フォーカスを戻しました。'
  ・
  ・
end;


まこと  2007-06-10 09:05:11  No: 26573

環境の記載がもれていました。
  環境はWin Xp Home SP2 + Dlphi 6 Personal です。


まこと  2007-06-13 10:10:17  No: 26574

単に右クリックのタイミングを捉えてBrowser1にフォーカスを当てる
だけでうまくいきました。
  お騒がせして申し訳ありませんでした。


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

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






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