`
w04301706
  • 浏览: 12688 次
  • 性别: Icon_minigender_1
  • 来自: jilin
社区版块
存档分类
最新评论

WinForm中使用Win32API发送自定义消息

 
阅读更多
I let AppA's Button1 to invoke the Button1_click event in AppB
In AppB I wrote:
        private string msgstr = "interprocess communication";
        private uint msg;
        [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
        static extern uint RegisterWindowMessage(string lpString);
        private void Form1_Load(object sender, System.EventArgs e)
        {
            msg = RegisterWindowMessage(msgstr);
            if (msg == 0)
            {
                MessageBox.Show(Marshal.GetLastWin32Error().ToString());
            }
        }
        private void button1_Click(object sender, System.EventArgs e)
        {
            MessageBox.Show("AppB's button is clicked");
        }
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == msg)
            {
                //MessageBox.Show(msgstr + " from wndproc");
                button1.PerformClick();
            }
            base.WndProc(ref m);
        }
And in AppA I wrote:
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern bool PostMessage(int hhwnd, uint msg, IntPtr wparam,
        IntPtr lparam);
        [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
        static extern uint RegisterWindowMessage(string lpString);

        private string msgstr = "interprocess communication";
        private uint msg;
        private const int HWND_BROADCAST = 0xffff;
        private void button1_Click(object sender, System.EventArgs e)
        {
            msg = RegisterWindowMessage(msgstr);
            if (msg == 0)
            {
                MessageBox.Show(Marshal.GetLastWin32Error().ToString());
            }
            PostMessage(HWND_BROADCAST, msg, IntPtr.Zero, IntPtr.Zero);
        }
PS. Both should using System.Runtime.InteropServices;if PostMessage doesn't work you can try SendMessage
分享到:
评论

相关推荐

    C# WinForm文件管理系统(终结版)

    提供了解决方案,使客户端用户使用更流畅。(管理员功能) 4.(2011-03-14)纠正了数据创建时错误,适应SQLServer不同 版本的数据库;纠正了在SQLServer下不同版本数据库备份时路径 错误问题。 5.(2011-03-...

    解决C# winForm自定义鼠标样式的两种实现方法详解

    导入API 代码如下:[DllImport(“user32.dll”)]public static extern IntPtr LoadCursorFromFile(string fileName);[DllImport(“user32.dll”)]public static extern IntPtr SetCursor(IntPtr cursorHandle...

    日程控件GanttPlanner v1.0源码2012612

    0. 纯.NET代码编写,不含Win32API引用 1. 节点支持各种拖拽模式 2. 可以通过拖拽来缩放节点 3. 可以直接在线编辑(数据源同步更新) 4. 支持百分比指标的显示/隐藏 5. 根据一行中的节点数自动调整节点高度 6. 可高亮...

    C1.Win.C1FlexGrid.2.dll

    在ComponentOne 2012V3中,开发人员的交互界面和提示信息都是中文,包括菜单和对话框等交互界面,在设计时控件各对象的方法和属性的说明,以及在Visual Studio 环境中的 API 智能提示等。ComponentOne 2012V3还针对...

    .net技术资料大全(语言规范 源码教程 学习笔记 技术资料 .net代码生成器)

    使用Win32和其他库.txt 使用自己画的光标.txt 数据绑定.txt 水晶报表使用winform.txt 水印.txt 特殊文件夹路径.txt 同一解决方案中一个项目的xml注释在另一个项目中不能智能提示显示这些注释的解决方法.txt ...

    ASP升级.net资料大全(c#入门 语言规范 源码教程 学习笔记 技术资料 面试题 asp与.net代码生成器)

    使用Win32和其他库.txt 使用自己画的光标.txt 数据绑定.txt 水晶报表使用winform.txt 水印.txt 特殊文件夹路径.txt 同一解决方案中一个项目的xml注释在另一个项目中不能智能提示显示这些注释的解决方法.txt ...

    asp.net知识库

    在ASP.NET中使用WINDOWS验证方式连接SQL SERVER数据库 改进ADO.Net数据库访问方式 ASP.NET 2.0 绑定高级技巧 简单实用的DataSet更新数据库的类+总结 [ADO.NET]由数据库触发器引发的问题 为ASP.NET封装的SQL数据库...

    SoCompressor

    1.压缩、混淆、美化、格式化都支持,断网条件下可以使用,软件不是使用的在线API. 1.支持批量操作,可以同时处理JS与CSS文件,可以多文件导入,多文件夹搜寻,当然直接复制代码进行操作也可。 2.可以选择对原文件...

    Visual C++2010开发权威指南(共三部分).part1.rar

    5.21.3 在日期和时间选择器控件中使用自定义格式字符串 254 5.21.4 在日期和时间选择器控件中使用回调字段 254 5.21.5 处理日期和时间选择器控件中的通知消息 256 5.22 Visual C++ 2010 Month Canlendar控件简介与...

Global site tag (gtag.js) - Google Analytics