none
Visual C++で、WebBrowserコントロール等からFlashで作られたコンポーネントのクリックを検出する方法について RRS feed

  • 質問

  • 1週間前にMFCのメーリングリスト(http://ml.acty-net.ne.jp/ml/mfc/)にも投稿したので

    マルチポストになってしまうのですが、解決する方法が見つからずに途方にくれている為、

    投稿させていただきました。

    何か情報がありましたら、あいまいな情報であってもいいので教えていただけないでしょうか。

    Visual C++で、WebBrowserコントロールを使ってブラウザのようなアプリケーションを作成しています。

    作成しようとしているものは、既存のクリック募金のサイトにアクセスして、クリック回数や募金の金額を管理してくれる簡単なアプリです。

    対象とするサイトは以下のようなサイトです。

    http://www.kirin.co.jp/active/env/mizunomegumi/click.html
    http://clickbokin.ekokoro.jp/belmo.html
    http://www.thehungersite.com/cgi-bin/WebObjects/CTDSites

    クリック時に、WebBrowserコントロールのOnBeforeNavigate2()が呼ばれるサイト
    では、OnBeforeNavigate2()でフックする方法が使えると思います。
    ただ、一番上のキリンのサイトのようにFlashで書かれたサイトでは、クリック時に
    OnBeforeNavigate2()が呼び出されないようで、クリックを検出する方法を
    どのようにしたら良いかと悩んでします。

    なんか、良いアイディアあるでしょうか?
    WebBrowserも、HTMLも、Visual C++も、Flashも詳しくないのでどこからてを付けてよいか困っています。
    よろしくお願いします。

    2006年7月27日 8:18

回答


  • WebBrowser Controlを使用してアプリケーションを作成している場合に、

    WebBrowser Controlが行っているHTTP通信の情報をアプリケーション側で

    取得する方法ってあるでしょうか?


    WebBrowserコントロールが行っているHTTP通信の内容を取得することは,

    おそらく通常の方法では不可能と思います。(外していたら,すみません。)

    (前の発言を見ていると,WebBrowserコントロールでなく,Flashの行っている

     HTTP通信の内容を取得する必要があると思います。)

     

    少し強引に行うとしたら,APIフックによりWinInetの呼び出しを横取りすれば出来るかと思います。。

    APIフックについでの詳細は,以下のURLを参考にしてください。

    http://www.geocities.jp/i96815/windows/win09.html

     

     

     

    2006年8月7日 12:28
  • 上記サイト、URL が変更となりましたので返信させていただきます。

     

    インポートアドレステーブルと API フック

    http://keicode.com/windows/win09.php

     

    2008年11月6日 10:56
  • 考えてみたものを列挙してみます。

    ただ、通常は他のアプリ(コンポーネント)の動作内容を盗むようなマネはしない方が良いと思います。

    アップデート等でうまく動かないとか、特殊なケースでは違う動きをするとか、予想できない事態も引き起こしますので。

     

     

    ・マウスフック

    望んだものがクリックされたかどうかの判定が難しい?

     

    ・メッセージフック

    マウスフックと同じ。マウスだけでよいのに、メッセージフックまでやるのは大げさな。

     

    ・Raw Socket

    APIフックを使わずにパケットの盗み見ができる。

    環境を選ぶし、手間があるかもしれない。

    Flashの通信を特定するのは難しいかもしれない。

     

    ・APIフックでrecvあたりを引っかける

    対象の通信内容が見える。

    但し、その内容が期待しているものかどうか判別するのは難しいかもしれない?

    単純なHTTPなら判別は簡単かもしれない。

     

    ・ローカルでプロキシを作る

    ブラウザもFlashもそのプロキシを通して通信するようにする。

    プロキシへのURL要求でどんなものが飛んでいるか捉える。

    既成のプロキシが使えると楽。自作するのは大変。

    2008年11月6日 14:28
    モデレータ

すべての返信

  • あまりに質問が抽象的だったので再度質問させてください。

    WebBrowser Controlを使用してアプリケーションを作成している場合に、WebBrowser Controlが行っているHTTP通信の情報をアプリケーション側で取得する方法ってあるでしょうか?

    もし情報をお持ちの方がいらっしゃいましたら、情報いただけないでしょうか。

    よろしくお願いします。

    2006年8月1日 17:16

  • WebBrowser Controlを使用してアプリケーションを作成している場合に、

    WebBrowser Controlが行っているHTTP通信の情報をアプリケーション側で

    取得する方法ってあるでしょうか?


    WebBrowserコントロールが行っているHTTP通信の内容を取得することは,

    おそらく通常の方法では不可能と思います。(外していたら,すみません。)

    (前の発言を見ていると,WebBrowserコントロールでなく,Flashの行っている

     HTTP通信の内容を取得する必要があると思います。)

     

    少し強引に行うとしたら,APIフックによりWinInetの呼び出しを横取りすれば出来るかと思います。。

    APIフックについでの詳細は,以下のURLを参考にしてください。

    http://www.geocities.jp/i96815/windows/win09.html

     

     

     

    2006年8月7日 12:28
  • 少し強引に行うとしたら,APIフックによりWinInetの呼び出しを横取りすれば出来るかと思います。。

    APIフックについでの詳細は,以下のURLを参考にしてください。

    http://www.geocities.jp/i96815/windows/win09.html

     

    返信おそくなってしまいすいません。

    試してみます。

    ありがとうございました。

    2006年10月4日 10:47
  • 上記サイト、URL が変更となりましたので返信させていただきます。

     

    インポートアドレステーブルと API フック

    http://keicode.com/windows/win09.php

     

    2008年11月6日 10:56
  • 考えてみたものを列挙してみます。

    ただ、通常は他のアプリ(コンポーネント)の動作内容を盗むようなマネはしない方が良いと思います。

    アップデート等でうまく動かないとか、特殊なケースでは違う動きをするとか、予想できない事態も引き起こしますので。

     

     

    ・マウスフック

    望んだものがクリックされたかどうかの判定が難しい?

     

    ・メッセージフック

    マウスフックと同じ。マウスだけでよいのに、メッセージフックまでやるのは大げさな。

     

    ・Raw Socket

    APIフックを使わずにパケットの盗み見ができる。

    環境を選ぶし、手間があるかもしれない。

    Flashの通信を特定するのは難しいかもしれない。

     

    ・APIフックでrecvあたりを引っかける

    対象の通信内容が見える。

    但し、その内容が期待しているものかどうか判別するのは難しいかもしれない?

    単純なHTTPなら判別は簡単かもしれない。

     

    ・ローカルでプロキシを作る

    ブラウザもFlashもそのプロキシを通して通信するようにする。

    プロキシへのURL要求でどんなものが飛んでいるか捉える。

    既成のプロキシが使えると楽。自作するのは大変。

    2008年11月6日 14:28
    モデレータ
  • こんにちは。中川俊輔です。

     

    皆様、回答ありがとうございます。

     

    uraxさん、フォーラムのご利用ありがとうございます。

    その後いかがでしょうか?

    有用な情報と思われる回答へ回答済みチェックをつけさせていただきました。

     

    今後ともフォーラムをよろしくお願いします。

    それでは!

    2008年11月20日 4:49