当我的程序运行的时候会在内存中作个记号,表示我已经运行,别的程序通过这个记号来判断我是否已经运行,我程序退出或者意外退出的时候,这个标记会自动消失;也就是我存在,它就存在,我不存在他就消失,本来以为是很简单的问题,后来细细想想还真的不简单,难以实现

解决方案 »

  1.   

    use MutexWinAPI CreateMutex用法查询MSDN
      

  2.   

    function CheckMutex(MutexName: string): boolean;
    // 检查互斥对象
    begin
    Result := OpenMutex(MUTEX_ALL_ACCESS, False, PChar(MutexName)) = 0;
    end;begin
    // 检查互斥,保证仅有一个实例存在。
    if CheckMutex(RES_MutexName) then
      begin
       // 建立互斥标识。
       hMutex := CreateMutex(nil, true, PChar(RES_MutexName));
        Application.Initialize;
        Application.CreateForm(TfMain, fMain);
      Application.Run;
    // 销毁互斥标识
    ReleaseMutex(hMutex); 
      end;
    end.