当前位置: 首页 > news >正文

网站建设方案实例广州seo优化外包公司

网站建设方案实例,广州seo优化外包公司,网站虚拟主机购买教程,贵阳网站建设公司C# Winform窗口间消息通知,使用Windows API SendMessage方法跨进程实现消息发送,重写WndProc方法接收消息并消息处理 主要使用到如下三个方法函数: WndProc:主要用在拦截并处理系统消息和自定义消息 可以重写WndProc函数&#xf…

C# Winform窗口间消息通知,使用Windows API SendMessage方法跨进程实现消息发送,重写WndProc方法接收消息并消息处理
主要使用到如下三个方法函数:

WndProc:主要用在拦截并处理系统消息和自定义消息
可以重写WndProc函数,来捕捉所有发生的窗口消息。这样,我们就可以"篡改"传入的消息,而人为的让窗口改变行为

SendMessage:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。该函数是应用程序和应用程序之间进行消息传递的主要手段之一
函数原型:IntPtr SendMessage(int hWnd, int msg, IntPtr wParam, IntPtr lParam);
参数
hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口
Msg:指定被发送的消息
wParam:指定附加的消息指定信息
IParam:指定附加的消息指定信息
返回值:返回值指定消息处理的结果,依赖于所发送的消息
备注:需要用HWND_BROADCAST通信的应用程序应当使用函数RegisterWindowMessage来为应用程序间的通信取得一个唯一的消息。
FindWindow:函数获得一个顶层窗体的句柄,该窗体的类名和窗体名与给定的字符串相匹配。这个函数不查找子窗体。在查找时不区分大写和小写
函数原型:int FindWindow(string lpClassName, string lpWindowName);
参数
IpClassName :指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针。假设该參数为一个成员,则它必须为前次调用theGlobafAddAtom函数产生的全局成员。该成员为16位,必须位于IpClassName的低 16位,高位必须为 0
IpWindowName:指向一个指定了窗体名(窗体标题)的空结束字符串。假设该參数为空,则为全部窗体全匹配
返回值:假设函数成功,返回值为具有指定类名和窗体名的窗体句柄;假设函数失败,返回值为NULL
例子代码如下:

public partial class Form1 : Form
    {
        public const int LOGINFORM_MSG = 0x400;
        protected override void WndProc(ref System.Windows.Forms.Message msg)
        {
 
            switch (msg.Msg)
            {
 
                case LOGINFORM_MSG: //自定义消息
                    switch ((msg.LParam.ToInt32()))
                    {
                        case 301:
                            {
                                MessageBox.Show("收到发来消息:" + msg.WParam.ToInt32());
                                //if (msg.WParam.ToInt32() == 1)
                                //{
                                //}
                                //else
                                //{
                                //}
                            }
                            break;
 
                    }
                    break;
            }
            base.WndProc(ref msg);     //调用基类函数处理非自定义消息。 
        }
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            //扫码线程
            Thread m_Thread1 = new Thread(Thread1Handle);
            m_Thread1.IsBackground = true;
            m_Thread1.Start();
        }
        static void Thread1Handle()
        {
            Thread.Sleep(3000);
            new Demo().Test();
        }
    }
public class Demo
    {
        /// <summary>
        /// 发送消息到指定窗口
        /// </summary>
        /// <param name="hWnd">其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,
        /// 包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口</param>
        /// <param name="msg">指定被发送的消息</param>
        /// <param name="wParam">指定附加的消息指定信息</param>
        /// <param name="lParam">指定附加的消息指定信息</param>
        /// <returns></returns>
        [DllImport("User32.dll", EntryPoint = "SendMessage")]
        private static extern IntPtr SendMessage(int hWnd, int msg, IntPtr wParam, IntPtr lParam);//窗口句柄、、
 
        /// <summary>
        /// 获取窗体句柄
        /// </summary>
        /// <param name="lpClassName">指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针。假设该參数为一个成员,
        /// 则它必须为前次调用theGlobafAddAtom函数产生的全局成员。该成员为16位,必须位于IpClassName的低 16位,高位必须为 0</param>
        /// <param name="lpWindowName">指向一个指定了窗体名(窗体标题)的空结束字符串。假设该參数为空,则为全部窗体全匹配</param>
        /// <returns></returns>
        [DllImport("User32.dll", EntryPoint = "FindWindow")]
        private static extern int FindWindow(string lpClassName, string lpWindowName);
        public const int LOGINFORM_MSG = 0x400;
 
        public void Test()
        {
            int WINDOW_HANDLER = FindWindow(null, "Form1");//发送消息窗口句柄this.Handle.ToInt32()
            if (WINDOW_HANDLER == 0)
            {
                throw new Exception("Could not find Main window!");//找不到主窗口
            }
 
            //long result = SendMessage(WINDOW_HANDLER, LOGINFORM_MSG, new IntPtr(MSG), new IntPtr(ID)).ToInt64();
            long result = SendMessage(WINDOW_HANDLER, LOGINFORM_MSG, new IntPtr(0), new IntPtr(301)).ToInt64();
            for (int i = 0; i < 100000; i++)
            {
                Application.DoEvents();
            }
            result = SendMessage(WINDOW_HANDLER, LOGINFORM_MSG, new IntPtr(1), new IntPtr(301)).ToInt64();
        }
    }

http://www.dinnco.com/news/43415.html

相关文章:

  • 网站外链建设可以提升网站百度做广告费用
  • 莱芜民生网站电商seo与sem是什么
  • 网站备案是在哪个部门佛山营销型网站建设公司
  • 厦门企业制作网站seo网站优化
  • 手机视频做动画视频在线观看网站班级优化大师app下载学生版
  • 杭州网站建设开发百度指数资讯指数
  • 网站建设域名的购买软文范文大全
  • 怎么自己做网站教程百度竞价推广是什么意思
  • 网站名称收录百度搜索引擎网址格式
  • p2p网站数据分析怎么做外贸seo站
  • wordpress 分割线河南网站建设优化技术
  • 网站建设图片怎么做竞价推广账户托管
  • wordpress迁移网站泰州seo推广
  • 徐州开发的网站游戏代理0加盟费
  • 偷拍哪个网站做的好网络营销课程实训报告
  • 文创产品设计方案模板免费seo视频教程
  • 微信网站怎么做的好名字吗宁波seo怎么做引流推广
  • 磁力离心泵做网站最靠谱的十大教育机构
  • 金融公司网站 html优化课程
  • 做受网站在线播放广州网站快速排名
  • wordpress网站渗透测试品牌策划书
  • 广州市信息技术职业学校深圳seo云哥
  • 个人备案 做政府网站商丘关键词优化推广
  • 营销型网站与展示型网站5118数据分析平台
  • 松江新城做网站外链图片
  • 网站正在建设中单页北京网站制作
  • 品牌案例网站网站维护一般都是维护什么
  • 网站建设的技术风险北京效果好的网站推广
  • wamp wordpress 安装南京百度seo排名
  • 做服装哪个网站图片多经营管理培训课程