システム.__ ComObjectの基本型からメソッドを呼び出します
-
19-09-2019 - |
質問
私は、MSIファイルからいくつかの情報を取得しようとしている。
私が使用します:
Type installerType = Type.GetTypeFromProgID("WindowsInstaller.Installer");
object installerInstance = installerType.CreateInstance(installerType);
\ WINDOWS \ SYSTEM32 \のMsi.dll、およびWindowsInstaller.InstallにinstallerInstanceをキャストが、私のアプリケーションは、多くの異なるオペレーティングシステム(XP上で実行されますから、私は、ファイルCへの参照を追加するためのオプションをよく知っています2003年、ビスタ、7、2008)とプロセッサ(x86の - のx64)、私は動的にインスタンスを使用したい。
。問題は、システム.__ ComObject方法が可視および実行可能である、私は基礎となる「WindowsInstaller.Installer」タイプに達することができないということです。
どのように動的に基礎となるオブジェクトから...な「OpenDatabaseメソッド」などのようにメソッドを呼び出すことができますか?
解決
あなたは、メソッドを呼び出すためにリフレクションを使用する必要があります。ここでの方法をを実行しますnoreferrer"> ます:
// obtain the COM type:
Type type = Type.GetTypeFromProgID("WScript.Shell");
// create an instance of the COM type
object instance = Activator.CreateInstance(type);
// Invoke the Run method on this instance by passing an argument
type.InvokeMember(
"Run",
BindingFlags.InvokeMethod,
null,
instance,
new[] { @"c:\windows\notepad.exe" }
);
所属していません StackOverflow