zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    AOP的实现原理——动态代理
    反射
    代理模式
    sprig——jar包
    spring事务管理
    [c++基础]3/5原则--拷贝构造函数+拷贝赋值操作符
    [c++面试准备]--vector对象是如何增长的
    c++面试须知
    redhat--1
    kvm配置虚拟机[待整理]
  • 原文地址:https://www.cnblogs.com/danju/p/3691513.html
Copyright © 2011-2022 走看看