当前位置:编程学习 > C#/ASP.NET >>

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读出来用。 --------------------编程问答-------------------- 所以对于一个窗体来说,是不断的在接受消息的。比如鼠标悬停在某某控件上,就是一个消息,移出这个控件又是一个消息。一个消息对应触发一个事件,编写了事件代码,就会执行相应的代码操作...

没触发条件(对应的事件),怎么向窗体发送消息?
--------------------编程问答--------------------
引用 1 楼 Jia_H 的回复:
那个不是给你这种需求用的。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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,