龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC和Delphi程序只运行一个实例的方法(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
我们在VC中以一个没有窗口,也不用MFC的Win32应用程序作例子。打开VC6,新建一个工程,类型选择Win32 Application,工程名为:OnlyOne,单击OK,选择一个空的工

  我们在VC中以一个没有窗口,也不用MFC的Win32应用程序作例子。打开VC6,新建一个工程,类型选择Win32 Application,工程名为:OnlyOne,单击OK,选择一个空的工程,完成。为工程添加一个新的C++源代码文件,命名为:OnlyOne.c,并输入如下代码:

#include <Windows.h>

int
WINAPI
WinMain(
 HINSTANCE hInstance,
 HINSTANCE hPrevInstance,
 LPSTR lpCmdLine,
 int nShowCmd
)
{
 char strAppName[] = "OnlyOne";
 HANDLE hMutex = NULL;

 //创建互斥对象
 hMutex = CreateMutex(NULL, FALSE, strAppName);
 if (hMutex != NULL)
 {
  if (GetLastError() == ERROR_ALREADY_EXISTS)
  {
   MessageBox(NULL,TEXT("不是第一次运行这个程序。"),TEXT("OnlyOne"),MB_OK | MB_ICONINFORMATION);
   //关闭互斥对象,退出程序
   CloseHandle(hMutex);
   return (-1);
  } else
  {
   MessageBox(NULL,TEXT("第一次运行这个程序。"),TEXT("OnlyOne"),MB_OK | MB_ICONINFORMATION);
  }
  } else
  {
   MessageBox(NULL,TEXT("创建互斥对象失败。"),TEXT("OnlyOne"),MB_OK | MB_ICONINFORMATION);
  }
  //关闭互斥对象
  CloseHandle(hMutex);
  return (-1);
}

  同理,这个方法适用于所有的原生Win32应用程序,能够正常调用GreateMutex和GetLastError两个函数即可,Delphi程序(这次是一个带有窗口的程序)可以参考以下步骤和代码:

  在Delphi中建立一个应用程序,然后单击菜单“Project”,单击“View Source”,这样就在代码编辑器中打开了工程文件,它的代码看起来像这样:

program OnlyOne;

uses
Forms,
uOnlyOneWindow in 'uOnlyOneWindow.pas' {OnlyOneWindow };

收藏文章
表情删除后不可恢复,是否删除
取消
确定
图片正在上传,请稍后...
评论内容为空!
还没有评论,快来抢沙发吧!
按钮 内容不能为空!
立刻说两句吧! 查看0条评论
精彩图集

赞助商链接