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;
    }

  • 相关阅读:
    NOIP200304麦森数
    NOIP201103瑞士轮
    NOIP200406合并果子
    Dijkstra堆优化与SPFA模板
    BZOJ1095: [ZJOI2007]Hide 捉迷藏
    NOIP201307货车运输
    hdu2062(递推)
    hdu1260(dp)
    hdu1158(dp)
    hdu1059(多重背包)
  • 原文地址:https://www.cnblogs.com/danju/p/3691513.html
Copyright © 2011-2022 走看看