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

  • 相关阅读:
    面试常见问题(2)-数据同步
    面试常见问题-SQL
    4TH PROFILE SOURCE IN SHAREPOINT 2013′S PEOPLE PICKER
    InfoPath代码切换视图
    Winform 的小技巧
    Sharepoint Workflow模板激活
    Hadoop介绍
    InfoPath的常见处理办法
    InfoPath的常见问题---连接外部数据源提示
    flask表单操作
  • 原文地址:https://www.cnblogs.com/danju/p/3691513.html
Copyright © 2011-2022 走看看