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

c# c++程序 交互

目录

一、两种不同程序写的进程交互

1、定义交互消息 

2、定义C++进程发来的消息ID

3、定义C++进程交互的句柄 及给C++进程发送的消息ID

4、定义交互消息所需的数据类型

5、引入所需的系统函数

6、给主进程发消息

7、写入本进程主窗口句柄

8、处理发来的交互消息


一、两种不同程序写的进程交互

1、定义交互消息 

        public const int WM_COPYDATA = 0x004A;public const int CSIDL_APPDATA = 0x001a;

2、定义C++进程发来的消息ID

        public const int SubExe_EXIT = 1;  //退出子进程public const int SubExe_Show = 2;public const int SubExe_Hide = 3;public const int SubExe_SendInfo = -1;

3、定义C++进程交互的句柄 及给C++进程发送的消息ID

public int m_hxnwHWND = 0;public const int ToXnwInfo = 200; //给C++进程发送 

4、定义交互消息所需的数据类型

        struct COPYDATASTRUCT{public IntPtr dwData;    // Any value the sender chooses.  Perhaps its main window handle?public int cbData;       // The count of bytes in the message.public IntPtr lpData;    // The address of the message.}public struct COPY_DATA{public IntPtr dwData;public int cbData;[MarshalAs(UnmanagedType.LPStr)]public string lpData;}

5、引入所需的系统函数

       [DllImport("kernel32.dll")]static extern bool WritePrivateProfileString(string lpAppName, string lpKeyName,string lpString, string lpPath);[DllImport("kernel32.dll")]private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);[DllImport("user32.dll")]public static extern int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam);[DllImport("shell32.dll")]static extern int SHGetFolderPath(IntPtr hwndOwner, int nFolder, IntPtr hToken, uint dwFlags, [Out] StringBuilder pszPath);

6、给主进程发消息

        public static void SendXnwMessage(int hWnd, string message){IntPtr lpData = Marshal.StringToHGlobalAnsi(message);COPYDATASTRUCT data = new COPYDATASTRUCT();data.dwData = (IntPtr)ToXnwInfo;data.cbData = message.Length + 1;data.lpData = lpData;IntPtr lpStruct = Marshal.AllocHGlobal(Marshal.SizeOf(data));Marshal.StructureToPtr(data, lpStruct, false);IntPtr nWp = IntPtr.Zero;SendMessage((IntPtr)hWnd, WM_COPYDATA, nWp, lpStruct);}

7、写入本进程主窗口句柄

public void WriteHwnd(IntPtr hwnd){const int MaxPath = 260;StringBuilder builder = new StringBuilder(MaxPath);SHGetFolderPath(IntPtr.Zero, (int)CSIDL_APPDATA, IntPtr.Zero, 0x0000, builder);string path = builder.ToString() + "\\kuaileketang";Directory.CreateDirectory(path);path += "\\hWnd.ini";string text = String.Format("{0}", hwnd);WritePrivateProfileString("Wnd", "hWnd", text, path);读取校内外窗口句柄StringBuilder temp = new StringBuilder(256);int i = GetPrivateProfileString("Wnd", "hParent", "0", temp, 256, path);string xnwHwndStr = temp.ToString();m_hxnwHWND = int.Parse(xnwHwndStr);if (true)SendXnwMessage(m_hxnwHWND, "");               //若有环境,则发送空信息elseSendXnwMessage(m_hxnwHWND, "www.biying.com"); //若没有环境,则发送下载该环境所需的网址 }

8、处理发来的交互消息

public  void onCopyData(int msg, IntPtr wParam, IntPtr lParam){if (msg == WM_COPYDATA){COPY_DATA copyData = (COPY_DATA)Marshal.PtrToStructure(lParam, typeof(COPY_DATA));if (null != copyData.lpData){int id = (int)copyData.dwData;string jstr = copyData.lpData;switch(id){case SubExe_EXIT:{UnsetHotkey();trayIcon.Dispose();Application.Exit();}break;}}}}

相关文章:

c# c++程序 交互

目录 一、两种不同程序写的进程交互 1、定义交互消息 2、定义C进程发来的消息ID 3、定义C进程交互的句柄 及给C进程发送的消息ID 4、定义交互消息所需的数据类型 5、引入所需的系统函数 6、给主进程发消息 7、写入本进程主窗口句柄 8、处理发来的交互消息 一、两种不…...

解决ruoyi框架中使用pagehelper插件分页查询后对数据进行对象转换后失效问题

一、场景重现 使用rouyi框架时&#xff0c;可以看到很多分页查询&#xff0c;如&#xff1a; //-----------SysConfigController------------- GetMapping("/list") public TableDataInfo list(SysConfig config) {startPage();List<SysConfig> list config…...

RabbitMQ 应用

文章目录 前言1. Simple 简单模式2. Work Queue 工作队列模式3. Pubulish/Subscribe 发布/订阅模式Exchange 的类型 4. Routing 路由模式5. Topics 通配符模式6. RPC RPC通信7. Publisher Confirms 发布确认1. 单独确认2. 批量确认3. 异步确认 前言 前面我们学习了 RabbitMQ 的…...

使用Python读取Excel数据的详细指南

在数据分析中&#xff0c;Excel文件是一种常见的数据存储格式。使用Python读取Excel数据可以帮助我们更方便地进行数据处理和分析。本文将介绍如何在Python 2和Python 3中读取Excel数据&#xff0c;具体步骤和代码示例详细说明。 准备工作 在开始之前&#xff0c;请确保你已经…...

VitePress 动态路由与路径加载器详解

在使用 VitePress 构建静态网站时&#xff0c;动态路由功能允许我们通过单个 Markdown 文件和动态数据生成多个页面。本文将详细介绍如何使用动态路由以及路径加载器文件来生成这些页面&#xff0c;并提供实例代码和解释说明。 动态路由基础 动态路由的核心在于使用带有参数的…...

C#编程语言及.NET 平台快速入门指南

Office Word 不显示 Citavi 插件&#xff0c;如何修复&#xff1f;_citavi安装后word无加载项-CSDN博客 https://blog.csdn.net/Viviane_2022/article/details/128946061?spm1001.2100.3001.7377&utm_mediumdistribute.pc_feed_blog_category.none-task-blog-classify_ta…...

高等代数精解【9】

文章目录 向量空间与矩阵矩阵的行列式矩阵A的秩保持不变方阵的行列式线性无关的条件1. 线性组合为零向量的唯一性2. 矩阵的秩3. 几何解释&#xff08;对于二维和三维空间&#xff09;4. 行列式&#xff08;对于方阵&#xff09;总结 矩阵的非零子式基础重要性例子注意事项 非奇…...

谷粒商城の缓存篇

文章目录 前言一、本地缓存和分布式缓存1.本地缓存2.分布式缓存 二、项目实战1.配置Redis2.整合业务代码2.1 缓存击穿2.2 缓存雪崩2.3 缓存穿透2.4 业务代码1.0版2.5 分布式锁1.0版2.6 分布式锁2.0版2.7 Spring Cache及缓存一致性问题2.7.1 Spring Cache2.7.2 缓存一致性问题2.…...

永远学习:为什么人工智能难以适应新挑战

理解深度学习的局限性并追求真正的持续适应 欢迎来到雲闪世界。 “智者适应环境&#xff0c;正如水适应水瓶。”——中国谚语 “适应或灭亡&#xff0c;现在和以往一样&#xff0c;是大自然的必然法则。”——赫伯特乔治威尔斯 近年来&#xff0c;人工智能取得了长足的进步。所…...

【spring】 Jackson :@JsonIgnore 注解

@JsonIgnore 是 Jackson 库中的一个注解,用于在序列化和反序列化过程中忽略某个字段。也就是说,当对象被转换为 JSON 或从 JSON 转换为对象时,带有 @JsonIgnore 注解的字段将不会被包含在内在这个示例中,ignoredField 字段将不会出现在生成的 JSON 字符串中。 import com.…...

Dependencies与DependencyManagement的区别

现在Maven项目管理&#xff0c;在开发中时比较常用的&#xff0c;在一些项目汇总遇到依赖冲突的问题之后&#xff0c;还是没有能有一个很好的解决办法&#xff0c;这次就来看看在使用Maven管理依赖的过程中dependencies与dependencyManagement的区别。 DepencyManagement应用场…...

git svn 日记

1. git log -p -1 --name-only 该命令用于查看最新的一次提交记录的详细信息&#xff0c;包括文件更改情况。 git log&#xff1a;显示 Git 仓库的提交历史。-p&#xff1a;显示每次提交的差异 (diff)&#xff0c;也就是文件内容的修改部分。-1&#xff1a;表示只显示最近的一…...

FSMC

RAM ROM RAM和ROM相比&#xff0c;两者的最大区别是RAM在断电以后保存在上面的数据会自动消失&#xff0c;而ROM不会自动消失&#xff0c;可以长时间断电保存。 并且RAM的速度要远远高于ROM的速度。 SRAM SRAM 的存储单元以锁存器来存储数据&#xff0c;种电路结构不需要定时…...

NAT技术+代理服务器+内网穿透

NAT技术 IPv4协议中&#xff0c;会存在IP地址数量不充足的问题&#xff0c;所以不同的子网中会存在相同IP地址的主机。那么就可以理解为私有网络的IP地址并不是唯一对应的&#xff0c;而公网中的IP地址都是唯一的&#xff0c;所以NAT&#xff08;Network Address Translation&…...

【ABAP】ole2 excel多sheet导入导出

原理就不分享了 原来是用了动态表格&#xff0c;但是要导出不方便&#xff0c;所以就写死了&#xff0c;excel多sheet导入的类放在另一篇文章里 REPORT zcdemo17. INCLUDE ole2incl.DATA: excel TYPE ole2_object,workbooks TYPE ole2_object,workbook TYPE ole2_object…...

图像配准-小结

图像配准&#xff1a;找到一对图像间的几何变换关系&#xff0c;并且将待配准图像根据几何变换关系对齐到参考图像上&#xff0c;从而为图像融合、变化检测/监测提供基础。图像匹配&#xff0c;在某些语境中可能与上面的图像配准指的是一个东西&#xff0c;而在某些语境中可能指…...

【2025】基于Python的空气质量综合分析系统的设计与实现(源码+文档+调试+答疑)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

计算机基础知识-2

x86架构的寄存器 AT&T汇编和Intel汇编的区别 每取出完一条指令&#xff0c;PC会自动&#xff0b;"1"&#xff0c;指向下一条要被执行的指令。这里的1是指下一条指令&#xff0c;但是指令本身可能占用多个字节&#xff0c;所以地址可能不是以1叠加 当前执行的是10…...

Ubuntu2204配置连续失败后账户锁定

配置启用pam_faillock sudo nano /etc/pam.d/common-auth在最上面添加以下内容 auth required pam_faillock.so preauth silent audit auth sufficient pam_unix.so nullok try_first_pass auth [defaultdie] pam_faillock.so authfail auditsudo nano /etc/pam.d/…...

windows下安装elasticSearch和kibana

下载es 下载地址官网 下载后是个压缩包(elasticsearch-8.15.0-windows-x86_64)&#xff0c;解压即可 启动 配置 改一下 /conf/jvm.options文件&#xff0c;最后加一行编码配置&#xff0c;这个是为了启动后防止控制台乱码 -Dfile.encodingGBK启动es 依赖jdk8环境&#xf…...

OpenClaw成本优化:Qwen3.5-9B长任务拆解与Token消耗监控

OpenClaw成本优化&#xff1a;Qwen3.5-9B长任务拆解与Token消耗监控 1. 为什么需要关注OpenClaw的Token消耗 上周我让OpenClaw帮我整理一个季度的工作报告&#xff0c;结果第二天发现账户里的大模型调用额度几乎见底。查看日志才发现&#xff0c;这个看似简单的任务竟然消耗了…...

SEO IP 地址对网站排名的重要性是什么

SEO IP 地址对网站排名的重要性是什么 在当前的互联网时代&#xff0c;网站排名直接关系到网站的流量和收益。作为网站运营者&#xff0c;我们都知道搜索引擎优化&#xff08;SEO&#xff09;是提升网站排名的关键。而在SEO的诸多因素中&#xff0c;IP地址的作用有时被忽视。S…...

【2026年最新600套毕设项目分享】springboot公司财务预算管理系统(14329)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

Condition底层机制剖析:多线程等待与通知机制 _

在使用Lock之前&#xff0c;使用的最多的同步方式应该是synchronized关键字来实现同步方式了。配合Object的wait()、notify()系列方法可以实现等待/通知模式。 Condition接口也提供了类似Object的监视器方法&#xff0c;与Lock配合可以实现等待/通知模式&#xff0c;但是这两者…...

一篇吃透RNN(循环神经网络),LSTM(长短期记忆网络),BiLSTM(双向长短期记忆网络)算法,计算机小白也能轻松看懂

NLP-AHU-125&#xff08;神秘暗号&#xff09;哈喽各位CSDN的小伙伴们&#xff0c;我是一名专注AI入门干货的大学生博主&#xff5e; 相信刚接触深度学习序列模型的同学&#xff0c;都被RNN、LSTM、BiLSTM这三个“孪生兄弟”绕晕过&#xff1a;明明都是处理序列数据&#xff0c…...

先定义CSP的核心变量

67-考虑光热电站的综合能源系统优化调度模型 摘要&#xff1a;代码主要做的是含有光热电站的综合能源系统优化调度模型&#xff0c;共做了四个算例&#xff0c;分别对比了目标函数一次、二次、考虑弃风弃光、碳排放等四个算例&#xff0c;综合能源系统主要设备包括光热电站、风…...

我的编程启程之路

一、自我简绍我是一名大三数学专业学生&#xff0c;在学习一点Python后对于代码有了兴趣&#xff0c;从而开始依据网上的视频学习编程。二、编程目标短期内目标是学习c语言等去准备408备战2027考研争取上岸。长期目标是能够进入一个大厂工作。三、学习规划脚踏实地&#xff0c;…...

Qwen2.5-VL图文对话模型5分钟快速部署:vllm+chainlit一键搭建教程

Qwen2.5-VL图文对话模型5分钟快速部署&#xff1a;vllmchainlit一键搭建教程 1. 环境准备与快速部署 1.1 系统要求 推荐配置&#xff1a;Linux系统&#xff08;Ubuntu 20.04&#xff09;GPU&#xff1a;至少16GB显存&#xff08;如NVIDIA RTX 3090/A100&#xff09;内存&…...

小米智能家居与Home Assistant零门槛实战:从集成到优化全流程指南

小米智能家居与Home Assistant零门槛实战&#xff1a;从集成到优化全流程指南 【免费下载链接】ha_xiaomi_home Xiaomi Home Integration for Home Assistant 项目地址: https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home 小米智能家居集成项目&#xff08;ha_xia…...

BilibiliDown终极指南:3个专业技巧实现B站视频高效下载与无损音频提取

BilibiliDown终极指南&#xff1a;3个专业技巧实现B站视频高效下载与无损音频提取 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.c…...