Delphi与Qt在Windows下使用共享内存进程间通信

Delphi部分


 

type
  TGuardInfo=record
    Lock: Integer;
  end;
  PGuardInfo = ^TGuardInfo;

  TGuardShareMem=class
  private
    FHandle: THandle;
    FGuardInfo: PGuardInfo;
  public
    constructor Create;
    destructor Destroy; override;
    function GetGuardInfo: PGuardInfo;
  end;

{ TGuardShareMem }

constructor TGuardShareMem.Create;
begin
  FHandle := CreateFileMapping(INVALID_HANDLE_VALUE, nil, PAGE_READWRITE, 0,
    SizeOf(TGuardInfo), PChar('guardinfo_2013'));
  FGuardInfo := MapViewOfFile(FHandle, FILE_MAP_WRITE or FILE_MAP_READ, 0, 0,
    sizeof(TGuardInfo));
  FGuardInfo.Lock := 0;
end;

destructor TGuardShareMem.Destroy;
begin
  UnmapViewOfFile(FGuardInfo);
  CloseHandle(FHandle);
  inherited;
end;

 

Qt部分


struct GuardInfo
{
    qint32 lock;
};

bool lock()
{
    QSharedMemory sharedMemory;
    sharedMemory.setNativeKey("guardinfo_2013");
    if (!sharedMemory.attach())
    {
        qDebug()<<"atttach fail";
        return false;
    }
    GuardInfo *p= (GuardInfo *)sharedMemory.constData();
    qDebug()<<p->lock;
    p->lock = 212;
    return true;
}

转载于:https://www.cnblogs.com/danju/p/3691513.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值