C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: IEの制御中にHRESULT からの例外:0x800A01B


(過去ログ 131 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■77680 / inTopicNo.1)  IEの制御中にHRESULT からの例外:0x800A01B
  
□投稿者/ Mira (3回)-(2015/11/16(Mon) 11:27:31)

分類:[VB.NET/VB2005 以降] 

いつも参考にさせてもらっています
今回もよろしくお願いします

Windows7
VisualBasic 2010
FrameWork4.0

のWindwosApplicationにてIE11を制御しています

1回目の操作は正常に終了するのですが2回目からはgetElementByIdにてエラーが発生します

System.NotSupportedException
HRESULT からの例外:0x800A01B6
   場所 Microsoft.VisualBasic.CompilerServices.LateBinding.LateGet(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack)
   場所 Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack)

Button1.click()を実行しなければエラーは発生しなくなります
この処理に何かあることまではわかっているのですが・・・

2回目からということで解放関連があやしいと思ってはいるのですが解決できませんでした
何か他に考えられることはないでしょうか?

発生するサンプルコードです
        Dim SO As Object = CreateObject("Shell.Application")
        Dim ShWins As Object = SO.Windows()
        For Each IE As Object In ShWins
            If IE.LocationURL.ToString.ToUpper = TargetUrl.ToUpper Then
                Dim Form1 As Object = IE.Document
                Dim Button1 As Object = Form1.getElementById("Button1")
                If Button1 IsNot DBNull.Value Then
                    Button1.click()
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(Button1)
                End If
                System.Runtime.InteropServices.Marshal.ReleaseComObject(Form1)
            End If
            System.Runtime.InteropServices.Marshal.ReleaseComObject(IE)
        Next
        System.Runtime.InteropServices.Marshal.ReleaseComObject(ShWins)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(SO)

引用返信 編集キー/
■77683 / inTopicNo.2)  Re[1]: IEの制御中にHRESULT からの例外:0x800A01B
□投稿者/ ワンタン (1回)-(2015/11/16(Mon) 12:30:13)
「HRESULT からの例外:0x800A01B6」で検索すると、
多くは型をキャストすることで回避できるようです。
ただし、これは、Microsoft.mshtml.dllが参照されていることが必要になります。
遅延バインドのみでの本件の解消は難しいかも知れません。

ところで、

> If Button1 IsNot DBNull.Value Then

これは DBNull.Value でいいのでしょうか?
引用返信 編集キー/
■77684 / inTopicNo.3)  Re[2]: IEの制御中にHRESULT からの例外:0x800A01B
□投稿者/ Mira (4回)-(2015/11/16(Mon) 13:01:11)
ワンタンさん早速の回答ありがとうございます

No77683 (ワンタン さん) に返信
> 「HRESULT からの例外:0x800A01B6」で検索すると、
> 多くは型をキャストすることで回避できるようです。
> ただし、これは、Microsoft.mshtml.dllが参照されていることが必要になります。
> 遅延バインドのみでの本件の解消は難しいかも知れません。

Microsoft HTML Object Libraryを参照設定することで解決しました
遅延バインドについても勉強致します
ありがとうございました

> ところで、
>>If Button1 IsNot DBNull.Value Then
> これは DBNull.Value でいいのでしょうか?

参照設定を追加することで値がNothingに変わりました
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -