|
分類:[.NET 全般]
C# 2012 .NET Framework4 IE11
InternetExplorer.Applicationを使っているのですが
新しいPCで返ってくるComObjectのタイプが本来のクラスでなく
困っています。
{
//ReleaseComObjectなど省略
Type classType = Type.GetTypeFromProgID("InternetExplorer.Application");
var application = Activator.CreateInstance(classType);
application.GetType().InvokeMember(
"Visible",
System.Reflection.BindingFlags.SetProperty,
null,
application,
new object[]{true});
application.GetType().InvokeMember(
"Navigate",
System.Reflection.BindingFlags.InvokeMethod,
null,
application,
new object[]{"http://www.yahoo.co.jp/"});
System.Threading.Thread.Sleep(5000); //本当はDocumentCompleteイベントを待つ
var doc = application.GetType().InvokeMember(
"Document",
System.Reflection.BindingFlags.GetProperty,
null,
application,
new object[]{});
var all = doc.GetType().InvokeMember(
"all",
System.Reflection.BindingFlags.GetProperty,
null,
doc,
new object[]{});
var item = all.GetType().InvokeMember(
"item",
System.Reflection.BindingFlags.InvokeMethod,
null,
all,
new object[]{1});
MessageBox.Show(item.GetType().ToString());
}
GetTypeの戻り値が、今までは
mshtml.HTMLHeadElementClass
mshtml.HTMLAnchorElementClass
mshtml.HTMLBodyClass
などでしたが
新しいPCでは、すべて
System.__ComObject
です。
新しいPCで、特に違うのはOSが64bitなのですが
これが原因かどうかわかりません。
よろしくお願いします。
|