- PR -

IHTMLElementのClick以外のイベントの発火方法

1
投稿者投稿内容
Ignotus
会議室デビュー日: 2007/10/08
投稿数: 6
投稿日時: 2007-11-07 22:32
開発環境:VisualStudio2005 C#
IE7

IHTMLElementのClick以外のイベントを発火させたいのですが、
どのようにプログラムすればよいのでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-11-08 07:33
引用:

Ignotusさんの書き込み (2007-11-07 22:32) より:
開発環境:VisualStudio2005 C#
IE7

IHTMLElementのClick以外のイベントを発火させたいのですが、
どのようにプログラムすればよいのでしょうか?



「発火」って(^_^; 意味わかるけど

プログラムすれば、とは、どういう意味でしょう?
イベントのトリガーは、そのイベントが発生する要件を満たしたときですよね?
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-11-08 08:20
引用:

「発火」って(^_^; 意味わかるけど



VC++ による古典的な COM プログラミングでは、「イベントを発生させる」という意味の動詞として Fire が用いられます。

また、イベントを発生させるためのメソッドの接頭辞として Fire を用いる習慣もあります。

引用:

プログラムすれば、とは、どういう意味でしょう?



IHTMLElement::click() 呼び出しにより、クリックイベントが発生します。

他のイベントを発生させるメソッドは見当たらないですね。

こういうのはもっと「どういう状況で」「何がしたいのか」といった、背景なんかを教えてもらえないと「ありません」以外に答えようがないパターンですね。
Ignotus
会議室デビュー日: 2007/10/08
投稿数: 6
投稿日時: 2007-11-11 00:49
回答あり号ございます。

引用:

渋木宏明(ひどり)さんの書き込み (2007-11-08 08:20) より:
こういうのはもっと「どういう状況で」「何がしたいのか」といった、背景なんかを教えてもらえないと「ありません」以外に答えようがないパターンですね。




確かに内容を絞りすぎました。
やりたいのは、IEに表示されている各要素のイベントを発生させることです。
したがって、現在の要素を絞り込む手順で得られるのがIHTMLElementというだけで、
IHTMLElementでなければないわけではありませんでした。

絞り込む手順
1.InternetExplorerからHTMLDocumentClassを取得
2.HTMLDocumentClassのgetElementsByTagNameでIHTMLElementCollectionを取得
3.IHTMLElementCollectionのItemからIHTMLElementを取得

得られたIHTMLElementのプロパティにイベントが関連付けられているようなのですが、
ここから先がわからないという状況です。

この先の手順または別の手順を教えていただけないでしょうか?
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-11-11 05:45
引用:

やりたいのは、IEに表示されている各要素のイベントを発生させることです。



「どうしてそんなことがしたいのか?」を問うてるのです。

Webアプリのテストツールでも作ってるんですか?
Ignotus
会議室デビュー日: 2007/10/08
投稿数: 6
投稿日時: 2007-11-11 17:49
引用:

渋木宏明(ひどり)さんの書き込み (2007-11-11 05:45) より:
Webアプリのテストツールでも作ってるんですか?



動機を質問されていたのですね。
予想されているとおり、テストツールを作成しています。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-11-11 18:51
引用:

動機を質問されていたのですね。



そんな処理が必要になることは滅多にないはずなので、「必要だ」と判断した根拠や過程に問題があるのではないかと思い、動機をお尋ねしました。

引用:

予想されているとおり、テストツールを作成しています。



HTTP レベルのテストじゃだめってことなんですよね?

ということなら、IHTMLElement3::fireEvent() でどうぞ。
Ignotus
会議室デビュー日: 2007/10/08
投稿数: 6
投稿日時: 2007-11-12 00:24
回答ありがとうございます。

IHTMLElement3にあったんですね。
IHTMLElement2以前の方法が気になりますが、
fireEventを試してみます。

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

スキルアップ/キャリアアップ(JOB@IT)