使用指针实现进程间通信

Qt进程间通信 之使用QSharedMemory 应用场景: 比如 QQ 与 QQ 音乐、QQ 影音等共享用户头像。 使用QSharedMemory入门,看这篇基本就够了。 https://www.devbean.net/2013/11/qt-study-road-2-ipc/ 摘要: 0、 QSharedMemory是Qt 提供的一种各个平台均有支持的进程间交互的方式。 1、Qt 使用QSharedMemory类操作 阅读详情

    使用指针进行进程间通信,大致思想就是,在一个应用程序中获得某个变量的地址,然后在另一个应用程序中通过内存读写来改变这个地址中的值,或者提取这个地址中的值。这就是整个过程,很简单。两个应用程序沟通的桥梁就是某个变量的地址(指针)。

    找到进程句柄: 首先在一个应用程序中,找到进程窗口的句柄(FindWindow()), 然后获得进程ID(GetWindowThreadProcessId(hWnd, &pid )),执行后pid就代表进程ID,通过pid找到进程句柄(OpenProcess (PROCESS_ALL_ACCESS,FALSE,pid)),

    基地址: LPVOID lpBaseAddress=(LPVOID)0x12fee8;

    读值:ReadProcessMemory(hProcess ,
  lpBaseAddress,(void*)&dwValue,sizeof(DWORD),0);

    写值:WriteProcessMemory(hProcess ,
  lpBaseAddress,(void*)&dwValue,sizeof(DWORD),0)) ;

    主要代码如下:

    读值:

 DWORD pid;

 HWND hWnd = ::FindWindow (NULL,TEXT("TestServer"));//找到进程的窗口句柄
 if(!hWnd)
 {
  AfxMessageBox("没有找到TestServer进程.");
  return;
 }

 ::GetWindowThreadProcessId(hWnd, &pid );
 HANDLE hProcess = ::OpenProcess (PROCESS_ALL_ACCESS,FALSE,pid);

 LPVOID lpBaseAddress=(LPVOID)0x12fee8;
 DWORD dwValue;

 if(!::ReadProcessMemory(hProcess ,
  lpBaseAddress,(void*)&dwValue,sizeof(DWORD),0)) return;

    m_strRead.Format("%d",dwValue);
 UpdateData(FALSE);

    写值:

 DWORD pid;

 HWND hWnd = ::FindWindow (NULL,TEXT("TestServer"));
 if(!hWnd)
 {
  AfxMessageBox("没有找到TestServer进程.");
  return;
 }

 ::GetWindowThreadProcessId(hWnd, &pid );
 HANDLE hProcess = ::OpenProcess (PROCESS_ALL_ACCESS,FALSE,pid);

 LPVOID lpBaseAddress=(LPVOID)0x12fee8;

 UpdateData();
 DWORD dwValue=atoi(m_strWrite);

 if(!::WriteProcessMemory(hProcess ,
  lpBaseAddress,(void*)&dwValue,sizeof(DWORD),0)) return;

登临科技Goldwasser加速卡Python SDK实战:从环境配置到YOLOv5模型性能压测 本文详细介绍了登临科技Goldwasser加速卡的Python SDK实战指南,从环境配置到YOLOv5模型性能压测的全过程。通过驱动安装、SDK环境搭建、模型转换与推理优化等步骤,帮助开发者高效利用AI加速卡提升深度学习模型性能。重点分享了批量推理压测技巧和常见问题解决方案,助力开发者充分发挥Goldwasser加速卡的算力优势。 阅读详情

相关推荐

ARM架构UOS实战:从源码编译Qt 5.15.2到定制Qt Creator的全流程解析

本文详细解析了在ARM架构统信UOS系统上,从源码编译Qt 5.15.2到定制Qt Creator开发环境的完整流程。内容涵盖环境准备、依赖部署、源码配置、编译优化、错误处理及IDE集成,旨在帮助开发者在国产化平台上构建自主可控的高性能Qt开发环境,解决特定ARM平台的兼容性与性能优化问题。

mango的博客 410

指针与进程间通信

空悬指针:free()后的指针 空指针:char*p=NULL; 野指针:char*p; debug版本中考虑assert,          release版本忽略assert CPU:内存 IPC:进程间通信 PCB:进程块 文件描述符在PCB中存着,文件在硬盘上 共享内存:两个进程通过共用一块内存,该内存为这两个进程的共用部分,且和两个进程都相关,由指针直接指向 管

lixiaona123456的博客 602

汇编语言与接口技术(第4版)清华大学出版社 第2章 80*86微处理器 课后题答案

汇编语言与接口技术(第4版)清华大学出版社 第2章 80*86微处理器 课后题答案

m0_51658788的博客 3606

进程间通信方式总结(windows 和linux)

原文:http://blog.163.com/laylau_ll/blog/static/178625909201173131345423/ 平时看的书很多,了解的也很多,但不喜欢总结,这不昨天面试的时候被问到了进程间通信的方式,因为没有认真总结过,所以昨天答得不是特别好。现在将linux和windows的进程间通信方式好好总结一下。           windows的进程间的通信方式有

永久指针 2614

IPD流程中CBB管理的5个致命误区,第3个坑了80%的团队

本文深入剖析了IPD流程中CBB管理的五个致命误区,尤其指出缺乏有效的度量与激励机制是影响80%团队的核心陷阱。文章强调CBB的核心在于前瞻性设计,而非简单归档,并需平衡通用性与产品竞争力,同时建立持续运营机制,确保CBB与市场需求对齐,从而真正实现缩短开发周期、降低成本的目标。

weixin_29234423的博客 569

24、手机GPS天线设计与有源GNSS天线性能评估

本文系统介绍了手机GPS天线的代表性设计,包括隔离磁偶极子、共面平衡偶极子和小型陶瓷加载QHA天线,分析了其结构特点、性能参数及适用场景。同时详细阐述了有源GNSS天线的组成结构与G/T比作为关键性能指标的评估方法,并提出了组件选择、噪声控制和增益提升等优化策略。最后展望了未来手机GPS天线在小型化、多频集成和智能适应性方面的发展趋势。

pytorch8learner的博客 719

指针与引用、进程间通信

指针与引用都是地址的概念,有很多相似的地方,引用能实现的功能,指针都能实现,它们都可以作为函数的参数传递,不同的是: 引用是对象的别名,其值不能为NULL,而指针却可以指向NULL 引用总是指向初始时被指定的对象,以后不能改变,指针变量却可以改变 //一般情况下,引用传递无需为形参分配新的存储空间,可以使形参的操作直接反映到实参上 什么情况下用指针? 存在不指向任何对象的可能,即NULL 能够在不

沧浪之水 553

UniApp 覆盖安装后首次进入 APP pages.json 不生效的解决方案

通过以上步骤,解决了缓存问题导致的首次加载异常。此方案的关键在于强制更新文件名,从根本上避免旧缓存的干扰。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 681

C#使用共享内存实现进程间通信以及通过名称来读取数据的原理

C#使用共享内存实现进程间通信以及通过名称来读取数据的原理

ergevv的博客 2142

让闲置 MacBook 当 OpenClaw 主机:合盖运行 + 后台常驻

摘要 本文详细介绍如何将闲置MacBook改造为OpenClaw服务器,实现合盖后持续运行。首先推荐Ubuntu 22.04 LTS作为操作系统,提供详细的安装步骤和分区建议。重点介绍三种禁用合盖休眠的方法:修改systemd-logind配置、使用pm-utils工具以及调整GRUB设置。随后指导如何安装Docker并部署OpenClaw服务,包括创建docker-compose.yml文件和配置环境变量。最后说明如何设置系统服务实现OpenClaw开机自启。通过以上配置,可使MacBook在合盖状态下7

一键难忘的博客 4653

华为OD面试手撕真题 【合并相邻且相等的元素】多语言题解

华为OD面试高频手撕真题【合并相邻且相等的元素】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。

qq_45776114的博客 546

使用 异步多线程TCP Socket 实现进程间通信(VC 6.0 , BCB6.0调试通过)

进程间通信有很多种方式,比如说 Pipe,共享内存,DDE,Socket等,关于进程通信方面的知识我在这里就不讨论了,大家可以看我博客里的另一些文章有讲...今天我们主要讨论怎么样使用Socket实现进程间通信。 本程序将使用Socket 的WSAEventSelect异步方式,使用多线程,建立一个服务器类,使用此类的时候只需要将处理数据的函数指针传给该类,进行数据处理,本例中,服务器将启动

xiao190128的专栏 1626

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Linux进程间通信的各种方式及其比较

内容摘要 进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问 的,唯一的例外是共享内存区。但是,系统空间却是“公共场所”,所以内核显然可以提供这样的条件。除此以外,那就是双方都可以访

yuyin86的专栏 573

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Boost.Interprocess使用手册翻译之五:独立于映射地址的指针:offset_pt (Mapping Address Independent Pointer: offset_ptr)

五.          独立于映射地址的指针:offset_ptr 当创建共享内存和内存映射文件进行两个进程通信时,内存片段在各进程上能够被映射到不同的地址: [cpp] view plaincopy#include     // ...     using boost::interprocess;     //Open a shared memory segment  shared_

818

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

swift 进程间通知和对象指针转换,定义错误码描述

//定义进程间通知回调 let callback:CFNotificationCallback = {(_,_,_,rawPointer,_) in let error = NSError(domain: "closeBroadcast", code: 0, userInfo: nil) //指针转对象 let sample = Unmanaged<SampleHandler>.fromOpaque(rawPointer!).takeUnretainedValue() .

颜忠贤 JoesRain 538

2017年8月8日

1.tcp和udp的区别? a.tcp是面向连接的,udp是无连接的 b.每一条tcp仅支持一对一通信,udp支持1对1、1对多、多对1和多对多的通信 c.tcp提供可靠交付的服务,udp使用尽最大努力交付 d.tcp面向字节流,udp面向报文 e.tcp有拥塞控制,udp没有拥塞控制 f.tcp首部开销最少20个字节,udp首部开销只有8个字节 2.指针和引用的区别? a.指针可...

weixin_30624825的博客 88

Qt 进程间通信(二) QSharedMemory、QSystemSemaphore

是 Qt 中实现高性能本机进程间通信的重要方案。1. QSharedMemory 负责共享数据2. QSystemSemaphore 负责跨进程同步3. QReadWriteLock 不能直接跨进程用4. 多读单写需要自己基于 QSystemSemaphore 封装5. 固定结构体 + 环形缓冲区适合工业实时数据6. QLocalSocket 适合配合共享内存发送通知7. 共享内存不是数据库,不适合长期存储8. 真正零拷贝要求直接在共享内存结构上读写存放实时大数据提供跨进程多读单写保护。

xjw的博客 402

C++容器模板在共享内存中的使用

本文用于探讨在共享内存中使用容器的好处,以及几种在共享内存中C++模板容器的方法。 1 为什么要在共享内存中使用模板容器? 为什么要避开普通内存而选择共享内存,那肯定是使用共享内存的优势: l 共享内存可以在多进程间共享,到达进程间通信的方式。 l 共享内存可以在进程的生命周期以外仍然存在。这就可以保证在短暂停止服务(服务进程coredump,更新变更)后,服务进程仍然可以继续使...

weixin_30483495的博客 478

Linux进程间通信——使用共享内存

下面将讲解进程间通信的另一种方式,使用共享内存。 一、什么是共享内存 顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一

ljianhui的专栏 24万+

进程间通信(IPC)介绍

一.为什么需要进程间通信 1).数据传输 一个进程需要将它的数据发送给另一个进程。 2).资源共享 多个进程之间共享同样的资源。 3).通知事件 一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件。 4).进程控制 有些进程希望完全控制另一个进程的执行(如Debug进程),该控制进程希望能够拦截另一个进程的所有操作,并能够及时知道它的状态改变。 二.什么是进程间通信 首先了解几个名词: 1. 进程隔离 进程隔离是为保护操作系统中进程互不干扰而设计的一组不同硬...

weixin_42005898的博客 1万+

Linux —— 进程间通信

进程间通信方式的介绍:管道通信、system V通信......

M的博客 6664

Linux:进程间通信---匿名管道

进程间通信:两个或者多个进程实现数据层面的交互,因为进程独立性的存在,导致进程通信的成本比较高。本篇文章从进程间通信的定义出发,由浅入深,从理论到原理解析,从解析到实例分析,最后再到运用的场景,我们不仅知道了进程间通信的本质就是不同进程间看到同一份资源,还知道了管道的系统调用和管道的使用,通过总结四种情况和五中特征的方式了解深入了解了管道的使用情况!!!

知北游天的博客 5865

Android ParcelFileDescriptor实现进程间通信

来建立一个pipe通信通道,ParcelFileDescriptor数组第一个元素是read端,第二个元素是write端,通过write端的AutoCloseOutputStream和read端的AutoCloseInputStream,我们就可以实现进程见的数据流传输了。两端业务层都把Uri对应的ParcelFileDescriptor发送给通信层,发送端通信层从AutoCloseInputStream中取数据发送,接收端通信层获取到数据后,写入到AutoCloseOutputStream中。

Dream It Possible 4018

进程间通信之管道

目录 前言 进程间通信的目的: 一.管道 1.1 匿名管道 1.1.1 匿名管道的使用场景 1.1.2 匿名管道实现通信的原理 1.1.3 怎么创建管道 1.1.4 怎么实现进程间通信 1.1.5 管道通信额四种情况 1.1.6 匿名管道的特征 1.2 命名管道 1.2.1 命名管道的原理 1.2.2 创...

weixin_57023347的博客 4301
上一篇: 在vc中自定义事件扩展控件功能
下一篇: C++细节---序言
burningcpu
博客等级 码龄20年 13粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值