通过反射设置其它进程窗口的属性和调用方法无效。 本帖最后由 fanyufanyu 于 2013-11-14 17:20:42 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 反射可以操作private set,private method.但是不代表你set了以后就会产生效果。要知道一个进程操作另外一个进程必须采用注入的方式。 http://www.vckbase.com/index.php/wv/1340.htmlManagedSpy是写在一个名为ManagedSpyLib的托管C++库上的。ManagedSpyLib的目标是允许在另一个进程中按计划访问基于.NET Framework的窗体。ManagedSpyLib暴露了一个名为ControlProxy的类,它代表了在另一个进程中的一个控件。虽然它不是一个实际的控件,你可以访问它代表的所有属性和事件。 ManagedSpyLib用一个内存映射(memory-mapped)文件在窥探和被窥探进程之间传递数据而起作用。 感谢楼上的朋友,我现在用的是另一个,.NET Object Spy 原理差不多。http://www.codeproject.com/Articles/16481/NET-Object-Spy-and-InvokeRemote封装了一个方法object Injector.InvokeRemote(IntPtr hWnd, string assemblyFile,string typeName, string methodName, object[] args)我的代码element = TF.Find(childformelement, "Form4", "");Injector.InvokeRemote((System.IntPtr)element.Current.NativeWindowHandle, @"..\..\..\..\WindowsFormsUI\bin\x86\Release\" + filemainname + ".exe", "WindowsFormsUI.Form4", "TestAdd", null);报异常提示说未找到方法WindowsFormsUI.Form4.TestAdd,很奇怪的问题。用spy++看了一下,异常窗口是WindowsFormsUI报的,说明注入成功了。 上面那个错误解决了。发现和我之前写的反射代码的绑定条件不一样,增加了一个BindingFlags::Instance条件,不报那个错了。Object^ retVal = type->InvokeMember(msg->MethodName, BindingFlags::Static | BindingFlags::Public | BindingFlags::InvokeMethod |BindingFlags::Instance , nullptr, nullptr, msg->Args);现在报非静态方法需要一个目标的错误。 静态方法没有问题,再问一下InvokeMember怎么得到一个类实例作为返回值呢? 改用ManagedSpy了,组件属性可以读写了,方法再试试,先结贴吧。 静态类如何调用和序列化 C#有些句子看不懂 数据库的实时转换 VS2005在Web.Config文件里怎么连接ACCESS数据库(急急!!!!!!!!!!) 还是CS简单问题,刚才结贴结太快了~ 紧急求救!正确获得Excel表的行,列值的问题 怎么出来移动图片时的小手~~ 求教:谁有windowsform的例子给我发一个,小弟我刚学这个没多久! 请教高手 如何将这一小段 代码 改写成 c# 代码 跪求 各位老大,关于datagrid的问题 C# 遍历memcached的所有对象 请教DevExpress中如何确定一个BarButtonItem属于哪个Group?
http://www.codeproject.com/Articles/16481/NET-Object-Spy-and-InvokeRemote
封装了一个方法
object Injector.InvokeRemote(IntPtr hWnd, string assemblyFile,
string typeName, string methodName, object[] args)
我的代码
element = TF.Find(childformelement, "Form4", "");
Injector.InvokeRemote((System.IntPtr)element.Current.NativeWindowHandle, @"..\..\..\..\WindowsFormsUI\bin\x86\Release\" + filemainname + ".exe", "WindowsFormsUI.Form4", "TestAdd", null);报异常提示说未找到方法WindowsFormsUI.Form4.TestAdd,很奇怪的问题。
用spy++看了一下,异常窗口是WindowsFormsUI报的,说明注入成功了。
发现和我之前写的反射代码的绑定条件不一样,增加了一个BindingFlags::Instance条件,不报那个错了。
Object^ retVal = type->InvokeMember(msg->MethodName, BindingFlags::Static | BindingFlags::Public | BindingFlags::InvokeMethod |BindingFlags::Instance , nullptr, nullptr, msg->Args);现在报非静态方法需要一个目标的错误。