c#windows消息循环sendmessage实例

2023-05-16

 [DllImport("User32.dll", EntryPoint = "SendMessage")]
        private static extern int SendMessage(
        IntPtr hWnd,        // 信息发往的窗口的句柄  
        int Msg,            // 消息ID  
        int wParam,         // 参数1  
        string lParam
        );
        [DllImport("User32.dll", EntryPoint = "SendMessage")]
        private static extern int SendMessage2(
       IntPtr hWnd,        // 信息发往的窗口的句柄  
       int Msg,            // 消息ID  
       int wParam,         // 参数1  
       IntPtr lParam
       );

        [DllImport("User32.dll", EntryPoint = "FindWindow")]
        private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);

        [DllImport("User32.dll", EntryPoint = "FindWindowEx")]
        private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpClassName, string lpWindowName);

 

 private void button4_Click(object sender, EventArgs e)
        {
          IntPtr hwnd=   FindWindow(null, "testForm");
            string info = "my info:ΑΒβδγζηθ";
          IntPtr pinfo= Marshal.StringToHGlobalAnsi(info);
            SendMessage2(hwnd, Form2.USERMESSAGEID, 12, pinfo);
            SendMessage(hwnd, Form2.USERMESSAGEID, 12, info);
        }

 

public  const int  USERMESSAGEID =0x2021;
        protected override void WndProc(ref Message m)
        {
             switch(m.Msg)
            {
                case USERMESSAGEID:
                   {
                        int wparam= m.WParam.ToInt32();
                        string str = Marshal.PtrToStringAnsi(m.LParam);
                        break;
                    }

            }
            base.WndProc(ref m);
        }

 

  [DllImport("User32.dll", EntryPoint = "SendMessage")]
        private static extern int SendMessage(
        IntPtr hWnd,        // 信息发往的窗口的句柄  
        int Msg,            // 消息ID  
        int wParam,         // 参数1  
        ref My_lParam lParam
        );

 

 IntPtr ptr = FindWindow(null, "主界面");
                    SendMessage(ptr, MYMESSAGE, 1, ref m);//发送消息  

 

  protected override void DefWndProc(ref Message m)
        {
            try
            {
                switch (m.Msg)
                {
                    
                    case MYMESSAGE:
                       {
                        My_lParam ml = new My_lParam();
                        Type t = ml.GetType();
                        ml = (My_lParam)m.GetLParam(t);
                       
                       break;
                        }
                   deafult :base.DefWndProc(ref m);
               }
            catch()
              {                  }
            }
       
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c#windows消息循环sendmessage实例 的相关文章

  • 在 Windows 上使用 Mono

    我知道这听起来很愚蠢但是 我发现了this http do davebsd com 应用程序是在 Mono 上编写的 并且是开源的 在查看源代码时 我发现这两个 using 指令阻止了我 using Gdk using Mono Unix
  • 在 Windows 上使用 asprintf()

    我编写了一个在Linux上完美运行的C程序 但是当我在Windows上编译它时 它给我一个错误 说asprintf 未定义 它应该是 stdio 库的一部分 但似乎许多编译器不包含它 我可以在 Windows 上使用哪个编译器来使用 asp
  • win32应用程序、Windows窗体应用程序和控制台应用程序之间有什么区别?

    我想知道 windows 窗体应用程序 win32application 和控制台之间有什么区别 我知道 windows 窗体应用程序和 win32 应用程序都是 gui 工具 但我想知道何时使用其中一个而不是另一个 我可以转换吗控制台应用
  • 将 runas 作为子进程启动并将密码写入标准输入?

    我正在尝试编写一个 C 程序 该程序应该从 Windows 调用 runas 工具并自动输入密码 我尝试过的 Process runas new Process runas StartInfo FileName runas runas St
  • Windows 上的 CMake 链接共享库

    共有三个文件 m c m h和 main c File m h m h int m File m c m c include
  • 提取图像文件元数据

    我希望能够在不打开文件的情况下提取图像的元数据和扩展属性 换句话说 如何以编程方式访问在 Windows 中右键单击文件并选择 详细信息 选项卡时显示的信息 使用 Net Framework 4 5 及更高版本执行此操作的正确方法是什么 我
  • 即使队列已重命名,如何在 Windows 上唯一标识该打印队列?

    如何唯一且可靠地识别给定服务器上的 Windows 打印队列 包括跨打印队列重命名 我想处理如下情况 Jdoe 创建打印机 A 我的程序在某个时刻收集有关打印机 A 的信息 Jdoe 将打印机 A 重命名为打印机 AA 我的程序在某个时刻再
  • 使用 Inno Setup 将序列号写入文件

    我正在尝试让以下 Inno Setup 代码正常工作 Setup UserInfoPage yes Code function CheckSerial Serial String Boolean begin Result true Save
  • 使用 WinAPI 的窗口截图

    如何使用 WinAPI 和 C 制作程序窗口的屏幕截图 要结束了WM PAINT 0x000F 发送到窗口的消息 我想对其进行屏幕截图 wParam HDC处理 但我的图片框中没有屏幕截图 如果我发送一个WM CLOSE消息 一切正常 目标
  • 适用于 Windows 的最佳免费 C++ 分析器是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个探查器 以便找到我的 C 代码中的瓶颈 我想找到一个免费的 非侵入性的 良好的分析工具 我
  • MFC中如何获取子菜单?

    我正在尝试获取一个子菜单 以便我可以在显示它之前对其进行更改 所以我创建了一个OnInitMenu 我的窗口的处理程序 我本来计划使用pMenu gt GetMenuItemInfo 获取子菜单 然而 这似乎行不通 为了找到我想要的菜单 我
  • 如何区分触摸板生成的 WM_MOUSE*** 消息和鼠标设备生成的 WM_MOUSE*** 消息?

    我试过了GetMessageExtraInfo 这里提到 检测WM MOUSEMOVE是否是由触摸 笔引起的 https stackoverflow com questions 29857587 detect if wm mousemove
  • 如何获取文件或目录的标准化日期/时间戳。在纯批处理脚本中?

    Windows 命令行中有没有一种方法可以检索标准化文件或目录的日期 时间戳 修改 创建 访问 独立于语言环境格式 例如 ISO8601 http www iso org iso home standards iso8601 htm 我发现
  • 如何使用 Windows API 检索 HD 供应商/序列号

    我说的是physical磁盘驱动器 而不是卷 分区 逻辑驱动器 所以通常建议GetVolumeInformation函数不适用于我的情况 确切地说 我直接使用尚未分区的磁盘 我通过打开它的句柄CreateFile功能 hDisk Creat
  • VC++致命错误LNK1168:无法打开filename.exe进行写入

    Suddenly my Visual Studio Express 2010 C stopped rebuilding my project When I first hit F7 the project builds and runs f
  • 应用程序错误:故障地址0x00012afb(专家)

    我需要一些 光 来找到解决方案 可能有很多事情会导致这个问题 但也许有人可以帮助我 场景 Windows 服务器 24 7 运行 PostgreSQL 数据库和其他服务器应用程序 用于处理数据库上的任务等 有不同的服务器场景 30 具有不同
  • 找出用户属于哪些组

    我有一个刚刚创建的 Windows 用户帐户 以 XYZ 为例 此 XYZ 属于我在计算机管理 gt 本地用户和组中创建的用户组和自定义组 因此 在属性中我看到该用户属于 2 个组 现在我想获取这些组并显示它们 有什么建议么 我已经这样做了
  • 关于 Windows、原始鼠标数据的代码要 #include 哪些内容

    我发现下面的帖子对于做我自己的项目非常有用 那么新手问题是 我必须包含什么才能使其发挥作用 Link 如何准确测量具有已知 DPI 的鼠标的鼠标移动 以英寸或厘米为单位 https stackoverflow com questions 1
  • 适用于 Windows 的 PHP 支持的 GUI 应用程序

    我知道 PHP 是一种解释性语言 对于基于 Web 的事物来说 不是为在实际操作系统上运行 GUI 应用程序而设计的 但是有没有办法呢 基本上 是否有一个框架 系统允许我创建 本机 基本上是二进制文件 exe 看起来像带有本机控件和所有内容
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star

随机推荐

  • c++中堆、栈内存分配概念示例讲解

    首先来看看主要有几种程序内存分配 xff1a 一个由C C 43 43 编译程序占用内存分为以下几个部分 1 栈区 xff08 stack xff09 由编译器自动分配释放 xff0c 存放函数参数值 xff0c 局部变量值等 其操作方式类
  • winform窗体控件多,加载慢、卡顿的解决办法

    protected override CreateParams CreateParams get CreateParams cp 61 base CreateParams cp ExStyle 61 0x02000000 用双缓冲绘制窗口的
  • c# 中ToolStrip控件中button控件,显示文字和图标

    1 同时显示文字和图标 DisplayStyle 属性设为 ImageAndText DisplayStyle属性用来设置图标的显示状态为 图片 文字 图片和文字 ImageRelation 属性设为 ImageBeforeText Tex
  • C#中的线程池使用方法

    1 线程池的概念 许多应用程序使用多个线程 xff0c 但这些线程经常在休眠状态中耗费大量的时间来等待事件发生 其他线程可能进入休眠状态 xff0c 并且仅定期被唤醒以轮询更改或更新状态信息 xff0c 然后再次进入休眠状态 为了简化对这些
  • C# 读写ini配置文件demo

    INI就是扩展名为 34 INI 34 的文件 其实他本身是个文本文件 可以用记事本打工 主要存放的是用户所做的选择或系统的各种参数 INI文件其实并不是普通的文本文件 它有自己的结构 由若干段落 SECTION 组成 在每个带括号的标题下
  • C#实现实体类和XML相互转换

    一 实体类转换成XML 将实体类转换成XML需要使用XmlSerializer类的Serialize方法 xff0c 将实体类序列化 public static string XmlSerialize lt T gt T obj using
  • C# 中xml数组的序列和反序列化方法

    先来看xml lt xml version 61 39 1 0 39 gt lt root xmlns xsi 61 39 http www w3 org 2001 XMLSchema instance 39 xmlns xsd 61 39
  • c#中使用XSLT将xml文档转换为html文档方法

    c 使用XSLT将xml文档转换为html文档 使用xslt可以将xml文档转成html xff0c 如下c 函数 xff1a 需要引用下面的命名空间 xff1a using System Xml using System Xml Xsl
  • C#控件常用设计整理大全

    1 常用属性 xff08 1 xff09 Name属性 xff1a 用来获取或设置窗体的名称 xff0c 在应用程序中可通过Name属性来引用窗体 xff08 2 xff09 WindowState属性 xff1a 用来获取或设置窗体的窗口
  • C# 获取可执行文件路径的上上级目录的方法

    1 DirectoryInfo di 61 new DirectoryInfo string Format 64 34 0 34 Application StartupPath di FullName 就是你想要的 有几个就是往回退几层 2
  • npm install error code EINTEGRITY sha1

    npm install error code EINTEGRITY sha1 其他环境代码打包至另一个环境 npm install 安装依赖报错 13023 error code EINTEGRITY 13024 error sha1 Lg
  • Winform中FormClosing与FormClosed区别与使用

    FormClosing与FormClosed事件 都是关闭窗体触发的事件 xff0c 区别 FormClosing事件 是在 关闭窗体时发生 xff0c 用户可以在该事件中 取消关闭 xff0c 窗体仍然保持打开状态 因此可以在该事件中提示
  • C#实现软键盘的几个关键技术实现方法

    在嵌入式应用和一些安全软件中经常需要不通过物理键盘输入 xff0c 虽然微软提供了也一个软键盘 xff0c 但这个软件盘不能定制界面不能自动感应当前光标是否处于输入状态 xff0c 所以有时候我们还是需要自己来实现这个软键盘 本文将讲解自己
  • C#中发送消息给指定的窗口到消息循环

    public class Note 声明 API 函数 DllImport 34 User32 dll 34 EntryPoint 61 34 SendMessage 34 private static extern IntPtr Send
  • C# 获得另一个窗体句柄并发送消息(使用windows API)

    using System using System Collections Generic using System ComponentModel using System Data using System Drawing using S
  • C# SendMessage用法(调用windows API)

    函数功能 xff1a 该函数将指定的消息发送到一个或多个窗口 此函数为指定的窗口调用窗口程序 xff0c 直到窗口程序处理完消息再返回 而函数PostMessage不同 xff0c 将一个消息寄送到一个线程的消息队列后立即返回 函数原型 x
  • dos下操作mysql数据库常用命令

    1 启动数据 net start mysql 2 连接数据库 mysql u root p 3 创建数据库 create database mytest xff1b 4 删除数据库 drop database mytest xff1b 5
  • C# 中IntPtr 与 string,数组互转

    一 IntPtr 与 string互转 string str 61 34 aa 34 IntPtr init 61 Marshal StringToHGlobalAnsi str string ss 61 Marshal PtrToStri
  • C#中使用SendMessage进行进程通信,可发送字符串,结构体(不能发送类类型)。

    发送时只能以结构体形式发送 xff0c 类的话会提示 指定结构必须能直接复制到本机结构中 xff0c 或是具有布局信息 的错误提示 以下两种结构体示例都可以被发送 public struct A public A int a name 61
  • c#windows消息循环sendmessage实例

    DllImport 34 User32 dll 34 EntryPoint 61 34 SendMessage 34 private static extern int SendMessage IntPtr hWnd 信息发往的窗口的句柄