首页 新闻 会员 周边 捐助

C#中InvokeMember调用的参数问题

1
悬赏园豆:100 [已关闭问题] 关闭于 2009-11-16 15:43
Type shellType = Type.GetTypeFromProgID("Shell.Application");

object objShell = System.Activator.CreateInstance(shellType);
//shellType.InvokeMember("Visible", BindingFlags.SetProperty, null, objShell, new Object[] { true });
object objShellWindows = objShell.GetType().InvokeMember("windows", BindingFlags.InvokeMethod, null, objShell, null);
//objShell = Interaction.CreateObject("Shell.Application");
//objShellWindows = objShell.Windows;
object[] oPar = {(uint)1};
object wcount = objShellWindows.GetType().InvokeMember("count", BindingFlags.GetProperty, null, objShellWindows, null);
MessageBox.Show(wcount.ToString());
Object oIE
= objShellWindows.GetType().InvokeMember("Item", BindingFlags.InvokeMethod, null, objShellWindows, new object[]{1});

用InvokeMember的方法调用windows shell,层级关系“shell.application->windows->item”。
最后一句在vb.net下改写后执行成功,但是在c#中不行。按照MSDN的说明(http://msdn.microsoft.com/en-us/library/bb773970(VS.85).aspx),“Item”的参数是iIndex,默认是0,也可以是其他整数(小于窗口数目即可),但是我这里用“1”,就是不行。
调试了很久了,没有头绪,还请大家帮忙。
问题补充: 重启VS2008又好了,似乎和VS2008的编译生成机制有关? 后续调用中出现“System.Reflection.TargetInvocationException”。
Jason Wang的主页 Jason Wang | 菜鸟二级 | 园豆:350
提问于:2009-11-14 22:45
< >
分享
所有回答(1)
0

报什么错啊

dege301 | 园豆:2825 (老鸟四级) | 2009-11-15 00:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册