日期:2014-05-19  浏览次数:20821 次

进程间通信
本人是个新手想向高手请教一个技术问题:用C#实现一个程序A,它能自动向已启动的进程B(程序B上有两个Button控件btna和btnb)发出click   btna的消息,就像用鼠标点了B的btna一样。

------解决方案--------------------
先请确定是进程还是线程?

是进程的话,可以让A给B发消息,B接到A的消息,就激发你要的事件.
是线程的话,用INVOKE就可以解决问题了,也就是委托.
------解决方案--------------------
用api发消息
貌似记得是这个函数
[DllImport( "user32.dll ", CharSet = CharSet.Unicode)]
public static extern IntPtr PostMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);
------解决方案--------------------
用FindWindow及FindWindowEX获取程序b的窗体句柄,然后遍历其子窗体,通过名称判断是否是所需要的按钮,是的话,通过postmessage获资格sendmessage想起发送消息。
FindWindow、FindWindowEX、postmessage、sendmessage都需使用api,不知道其PInvoke形式的话可以去PInvoke.net查询;
进程通讯还有其他方法,比较马乏