[過去ログ] HTAをもっと流行らせる計画 Part2 (853レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
712
(7): 2013/12/26(木)08:36 AAS
別の質問です。

HTAで呼び出したIEの、DocumentCompleteイベントを利用する方法についてです。

ブラウザのビジー状態を判定するための,より良い方法
http://d.hatena.ne.jp/language_and_engineering/20100410/p1

1. このやり方だと、IEのインスタンス化に、
WScript.CreateObject( "InternetExplorer.Application", "hoge_" )
が必要です。HTAでインスタンス化するにはどうしたら良いでしょう?

2. このやり方だと、イベントハンドラが固定です。ページ遷移をするごとに
別のイベントハンドラを動的に割り当てることはできないのでしょうか?
718: 712 2013/12/27(金)00:13 AAS
ご返事、遅くなりました。

>>713-714
すみません。「忍法帖」の書き込みエラーよけです。よく知らないですが。

>>715-716
ありがとうございます。見てみます。

>>717
ありがとうございます。
よろしかったら、JScriptでの書き方も教えていただけませんか?
724: 712 2014/01/10(金)02:47 AAS
大変遅くなって申し訳ありません。
残念ながら、HTAでIEのイベントを取得できないでいます。

>>715-716 さんの方法で、HTAからWScriptオブジェクトを利用することができました。

また、>>719さんの記法はよく分からなかったのですが、WSHの場合、
hoge_DocumentComplete = function() { .... }
と記述することで、イベントハンドラを動的に変更できました。

しかし、それを HTAの<script>要素に記述しても、イベントハンドラが割り当てられ
ませんでした。

どうしたら良いか、アドバイスをいただけたらありがたいです。
725: 712 2014/01/10(金)15:06 AAS
質問を再定義すると「HTAで、スクリプト内で生成されたActiveXオブジェクトの
イベントを取得できるか」になるでしょう。>>618さんの質問と同じです。
こちらに回答がないので、不可能なのかもしれません。

関連する質問です。HTA内でIEを生成(new ActiveXObject)、終了(ie.quit())を
繰り返していると
「このシステムでは、これ以上のスレッドを作成できません。」
というエラーが発生してしまいます。
これを避けるにはどうしたら良いでしょう?
quitイベントを取得するまで待つのが良いかと考えています。
727: 712 2014/01/10(金)17:16 AAS
>>726 ありがとうございます。WScript.ShellからIEの起動と、
Shell.Application windows によるIEのインスタンス取得はできました。
これのDocumentCompleteイベントを取得するにはどうしたら良いのでしょうか?
知識不足で申し訳ありません。

なお、IEのインスタンスの取得ですが、このスクリプトを動かす環境が多様で、
他にIEが起動している場合が多いし、起動直後のIEのホームページも一定では
ありません。起動したIEをどうやって見分けるかについても悩んでおります。
728: 712 2014/01/11(土)13:08 AAS
何度もすみません、HTA内で動的に生成したActiveXオブジェクトのイベントの
取得法を説明するページを、お教えいただけないでしょうか?

Scripting Clinic: イベントのスクリプティング
http://msdn.microsoft.com/ja-jp/library/ms974564.aspx
ここだと、
・ブラウザの要素のイベント
・<object>要素で指定したActiveXObject
のイベントの記述しかありませんでした。

WSHだとイベント取得はできるので、最悪、ロジックを全部WSHに書いて、HTAから
それをキックするしかないのかもしれません。
730: 712 2014/01/11(土)20:57 AAS
>>729
ご返事ありがとうございます。

結局、HTAでは、動的に生成したActiveXオブジェクトのイベントの
取得はできない、ということですか…。

>ieのeventは特殊で一般論は通用しない
これは「IEのActiveXObjectが特殊」という文意ではなくて、
IEはスクリプトホストとして特殊で、だからイベント操作には
HTAではなく、他のホスト(WSH, PowerShell, .NETなど)を
使ったほうが良い、という文意だったのでしょうか?

HTAでメインロジックをすでに書いてしまったので、正直頭を
省2
732
(1): 712 2014/01/12(日)10:07 AAS
WSF埋め込みのHTAを書いてみました。

HTAとWSHが一つのファイルにまとまるのは大変ありがたいのですが、
機能的には別ファイルにあるのと変わりがないようです。

変数や関数の共有はできないし、WSHからHTAにデータを渡すのは
HTA起動時に標準入出力を経由したり、外部ファイルをポーリングで監視する
などしかないようで、私のような初心者にはなかなか厳しいですね…。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.027s