SendMessage到底怎么用?
这个方法可以在代码中向一个进程发送消息首先说一下我对消息的理解:
最简单的WinForm程序:鼠标点击窗体的一个按钮,弹出一个MessageBox
其实那个窗体一直在接受系统传给它的各种消息,鼠标点击了按钮,也是发送的一个消息类型而已。因为编写了按钮点击事件,所以才会执行一段代码。其实即使不写那个事件代码,鼠标点击按钮的时候,这个消息依然会发送给窗体,只是没有做任何处理罢了
所以对于一个窗体来说,是不断的在接受消息的。比如鼠标悬停在某某控件上,就是一个消息,移出这个控件又是一个消息。一个消息对应触发一个事件,编写了事件代码,就会执行相应的代码操作
这是我的理解,如有错请指正……
下面说说我的需求:
程序A有一个全局变量
程序B向程序A发送消息,获取A里面这个全局变量的值
就是实现这么个需求
上网查了下SendMessage的用法,弄的挺晕的,问题如下:
1.
DllImport("user32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
在用这个函数的时候,消息类型wMsg用什么值比较好?
2.程序A里需要重写:
protected override void DefWndProc(ref Message m)
{
if (m.Msg == 2)
{
m.Result = (IntPtr)1;
}
base.DefWndProc(ref m);
}
这里面怎么把值返回给B程序? SendMessage C# --------------------编程问答-------------------- 那个不是给你这种需求用的。SendMessage是用于发送Windows自己的Message的。
你需要的是A提供一个服务/接口来给B调用。属于进程间调用了。你在网上查一下。如果是同一个机器的两个程序的话,有个什么slot的东东可以满足你的需求,A放里面写东西,B读出来用。 --------------------编程问答-------------------- 所以对于一个窗体来说,是不断的在接受消息的。比如鼠标悬停在某某控件上,就是一个消息,移出这个控件又是一个消息。一个消息对应触发一个事件,编写了事件代码,就会执行相应的代码操作...
没触发条件(对应的事件),怎么向窗体发送消息?
--------------------编程问答--------------------
哥啊……我就是查进程间通讯才找到的SendMessage,……不用这个的话,你倒是给个思路啊……什么slot的东东是个什么东东…… --------------------编程问答-------------------- 看看这个:
http://hi.baidu.com/gsgaoshuang/item/adf3ed5da9be1814da1635c2 --------------------编程问答-------------------- 我查了一下,是data slot,用Thread.SetData和Thread.GetData就可以,取决于slot的类型。
MSDN上的内容,看一下,有示例代码的:
http://msdn.microsoft.com/en-us/library/system.threading.thread.setdata.aspx --------------------编程问答--------------------
补充:.NET技术 , C#