`
w04301706
  • 浏览: 13526 次
  • 性别: 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
分享到:
评论

相关推荐

    WIN32API.rar

    "WIN32API.rar"这个压缩包就包含了开发者在C# WinForm项目中直接使用Win32 API的一些关键元素。 首先,`Enums.cs`文件中可能定义了一系列枚举类型,这些枚举对应于Win32 API中的常量,如窗口样式(WS_EX_*, WS_*)、...

    winform虚拟键盘

    在本文中,我们将深入探讨如何...总的来说,创建一个WinForm虚拟键盘涉及到C#编程、Win32API的使用以及对Windows消息机制的理解。通过实现这个项目,你不仅可以提升C#编程技巧,还能加深对Windows系统底层工作的认识。

    C# Winform+devexpress 自定义分页控件

    在.NET开发环境中,C# WinForm应用经常需要处理大量数据,这时自定义分页控件显得尤为重要。"C# Winform+devexpress 自定义分页控件"是为了解决这个问题而设计的一种解决方案,它利用DevExpress组件库的强大功能,...

    C# winform 实现按钮固定到菜单栏以及右键菜单

    `Win32.cs`可能包含了对Win32 API的封装,以实现一些WinForm控件无法直接提供的功能;`Form1.Designer.cs`是Visual Studio自动生成的,包含了窗体的布局和控件信息;`Form1.cs`是主窗体的代码逻辑;`Program.cs`包含...

    C# Winform自定义UI(一) 三种自定义窗口并可以拖动的方式.pdf

    该方法利用了Win32 API中的ReleaseCapture函数和 SendMessage函数。ReleaseCapture函数用于释放鼠标捕获,然后调用SendMessage向窗口发送系统命令以允许窗口移动。代码示例如下: ```csharp [DllImport("user32.dll...

    与USB HID设备的通信,win32应用程序,VS工程

    总的来说,这个项目为开发者提供了一个与USB HID设备交互的起点,有助于深入理解Win32 API在USB设备通信中的应用。如果你对USB设备编程感兴趣,或者正在开发相关项目,这个资源将是一个很好的学习材料。

    WinForm 中在窗口标题栏上加按钮.zip

    在Windows Forms(WinForm)开发中,有时我们可能需要自定义窗口标题栏,例如在标题栏上添加额外的按钮功能。这个"WinForm 中在窗口标题栏上加按钮.zip"文件提供了一个示例,帮助开发者了解如何在WinForm应用程序的...

    C# winform窗体四个角变成圆角,美观窗体

    https://blog.csdn.net/qq_34280681/article/details/105428119

    winform完美自动更新

    使用注册表操作类(如Microsoft.Win32命名空间下的RegistryKey)进行注册表更新;最后,如果需要,可以调用Process类的Start方法来重启应用程序,确保新版本的正常运行。 在实现自动更新时,Webservice常常作为...

    C#通过WIN32 API实现嵌入程序窗体

    在C#编程中,有时我们需要将一个程序的窗口嵌入到另一个程序的窗体中,以便于集成或创建自定义的用户界面。本篇将详细解释如何利用C#结合Win32 API来实现这一功能。 首先,Win32 API是Windows操作系统提供的底层...

    winform皮肤里面有很多种样式还有win 7类似的界面

    在WinForm中,可以使用自定义绘制或者第三方库来实现这些效果。 2. **Aero玻璃效果**:Windows 7的Aero特效提供了半透明和模糊背景。虽然WinForm自身不支持这种效果,但可以通过第三方库或自定义绘图技术模拟实现。...

    Winform窗体淡入淡出效果

    3. **事件更新**:在每次循环中使用`Application.DoEvents()`确保界面实时更新。 #### 方法四:自定义方法+定时器 这种方法使用了自定义方法`FormShow`来封装淡入逻辑,并结合定时器来实现整个过程。具体实现如下...

    C#Winform透明Textbox控件

    "win32.cs"可能包含了对Windows API函数的封装,因为WinAPI提供了更底层的控件操作能力,包括设置控件的透明性。 "AssemblyInfo.cs"是.NET程序集信息的存储位置,包含版本、版权等元数据。"AlphaBlendTextBox....

    C# winform左侧导航菜单栏(抽屉型)

    在Windows Forms中,可以借助P/Invoke技术调用Win32 API中的`AnimateWindow`函数,传入相应的参数来控制动画的速度和类型。 5. **布局设计**:在设计界面时,考虑到菜单栏的隐藏和显示,需要合理规划窗体的布局。...

    C#中如何使用Winform实现炫酷的透明动画界面

    在C#中,使用Winform实现炫酷的透明动画界面主要涉及到Windows API中的UpdateLayeredWindow函数。这个函数允许开发者创建具有透明度和 alpha 通道的窗口,从而实现复杂的界面效果。下面将详细介绍如何利用Winform和...

    winform皮肤基于irisskin

    IrisSkin4是这个框架的一个版本,提供了丰富的皮肤资源和易于使用的API,使得Windows应用程序的界面设计更加灵活和个性化。 首先,IrisSkin4的核心功能在于提供了一种简单的方法来改变WinForm控件的外观。它支持...

    winform html 编辑控件

    开发者可以下载并研究其内部实现,根据自己的需求进行定制或者直接在项目中使用。 - **ZetaHtmlEditControl**:这可能是另一个HTML编辑控件,可能提供了更高级的功能,如HTML5支持、CSS样式控制、JavaScript交互等...

    winform 嵌套chrome浏览器,.net开发谷歌内核浏览器。

    本文将详细介绍如何使用C#语言和WinForm控件配合Xilium.CefGlue库来实现这一目标。 Xilium.CefGlue是一个开源项目,它为.NET提供了与Chromium Embedded Framework (CEF)的接口。CEF是一个轻量级的浏览器引擎,它...

    c#winfromWinHtmlEditor编辑器控件

    在.NET框架中,C#开发者经常使用各种控件来构建用户界面,其中WinForms平台提供了丰富的控件库。本文将详细探讨"C# WinFrom WinHtmlEditor编辑器控件",这是一种用于在Windows Forms应用程序中嵌入HTML编辑功能的...

Global site tag (gtag.js) - Google Analytics