0

SHDocVw DLL を使用して、C# から Internet Explorer インスタンスを開いて操作しています。いくつかのテキスト ボックスの onkeyup イベントを有効にする必要があります。これは私が使用するコードです:

dynamic userNameTextBox=doc.getElementById(5749).getElementsByTagName("input")[0];
userNameTextBox.value=userName;
userNameTextBox.onkeyup.apply(userNameTextBox);


dynamic passwordTextBox=doc.getElementById(5750).getElementsByTagName("input")[0];
passwordTextBox.value=password;
passwordTextBox.onkeyup.apply(passwordTextBox);

これは「適用」への最初の呼び出しでは機能しますが、2 番目の呼び出しでは「System.MissingMemberException: 適用の呼び出し中にエラーが発生しました。」というエラーが生成されます。この問題は、「適用」の代わりに「呼び出し」を使用した場合にも発生します。ただし、イベント呼び出し関数の1つを「適用」から「呼び出し」に変更すると、機能しますが、プログラムの同じインスタンスでこのコードを再度呼び出そうとすると、同じ例外がスローされます。つまり、プログラムを再起動しない限り、「適用」または「呼び出し」を複数回使用することはできません。

この問題は、Windows XP+IE8 でのみ発生します。Windows7 + IE9で試してみると、「適用」/「呼び出し」を何度でも使用できます。

「適用」/「呼び出し」を複数回使用したり、他の方法でイベントを呼び出したりできるようにするためにできることはありますか?

4

1 に答える 1

0

OK、コマンドラインからJavaScript経由でイベントを呼び出すことで回避策を管理しました(別名「ナビゲート」)が、これにはCOM(Interop?)ベースのソリューションが必要だと思います...

于 2011-08-04T00:36:29.450 に答える