IE 内のサードパーティの ActiveX コントロールですべてのユーザー アクションをログに記録するタスクがあります。アクションは、テキスト ボックスへの記号の入力、ボタンのクリックなどです。そのため、BHO を作成し、指定されたクラス ID を持つ IHTMLElement を見つけました。このタスクを解決するための次のステップは何ですか? 私はC#を使用しています。
2 に答える
ActiveX コントロールは Object 要素でホストされます。IE DOM API を使用して Object 要素にアクセスできますが、そのレイヤーを超えると不透明になります。ActiveX コントロール自体が何らかの自動化を公開しない限り、それはネイティブ コードのブラック ボックスです。
主にサブクラス化またはフックを使用して、ネイティブ コントロールでクリックとキーの押下をインターセプトする方法があります。spy++ を使用してウィンドウ階層を検査し、 FindWindowと同等の管理対象を使用してそれらのウィンドウを探すことができます。
jeffamaphone が言ったように、Spy++ はテキスト ボックスの内容をキャプチャできます。これを行うために、Spy++ は実際に独自の DLL (spyxxhk.dll) を IE に挿入して、コントロールのコンテンツを取得できるようにします (これが、起動時に管理者権限を要求する理由です)。IE プロセスに挿入されると、IE プロセスに存在する任意の DLL (別名 ActiveX コントロール) をフックできます。
同じタイプのアクション (キャプチャ、ロギングなど) を実行するには、独自のインジェクション エンジンを開発して登録し、IE の起動時に自動的に開始されるようにする必要があります。これらの注入メカニズムに関連する多くの情報が Web にあります。ここで開始するURLです。