怎样在程序运行前判断是否有已运行的实例?

XChinux 2001-08-12 06:55:19
我在做一个校友信息管理查询系统,怎样在程序运行前判断是否有已运行的实例?
既只允许有一个实例在运行。
...全文
109 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
TR@SOE 2001-08-14
  • 打赏
  • 举报
回复
CreateMutex是不错的。推荐使用。
gloom 2001-08-14
  • 打赏
  • 举报
回复
学习
XChinux 2001-08-14
  • 打赏
  • 举报
回复
我用的是
...
WINAPI WinMain(...)
{
if(!FindWindow(NULL,"Application's Title"))
return 0;
try
{
...
..
..
}
ZengCh 2001-08-13
  • 打赏
  • 举报
回复
代码如下:

if( FindWindow( NULL, "窗体名" ) != 0 )
{
Application->MessageBox( "已有一个实例!", "提示", MB_OK );
return 0;
}
else
Application->MessageBox( "第一个实例!", "提示", MB_OK );
wangledong 2001-08-13
  • 打赏
  • 举报
回复
你试试,没错的!
//---------------------------------------------------------------------------
WINAPI WinMain ( HINSTANCE, HINSTANCE, LPSTR, int )
{
try
{
HANDLE runonce = CreateMutex ( NULL, false, "Msocx" );
if ( WaitForSingleObject ( runonce, 20 ) != WAIT_OBJECT_0 )
{
Application->Terminate();
exit(0);
}//就是上面这段代码!绝对好用!
Application->ShowMainForm = false;
Application->CreateForm ( __classid ( TForm1 ) , & Form1 ) ;
Application->Initialize () ;
Application->Run () ;
}
catch ( Exception & exception )
{
Application->ShowException ( & exception ) ;
}
return 0;
}
「已注销」 2001-08-13
  • 打赏
  • 举报
回复
枚举窗口的速度也不慢

但需要你那窗口的名字起的很蹊跷才好

否则如果那个文件夹和你的窗口名一样

恰好又在打开…………可能程序就认为已经运行了一个实例了

@_@
「已注销」 2001-08-13
  • 打赏
  • 举报
回复
楼上的方法我以前用过

但很不荣幸的没调试成功

我还是用了枚举窗口来完成的

@_@
wolfboy 2001-08-13
  • 打赏
  • 举报
回复
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
CreateMutex(NULL,true,"only_one_copy");
if(GetLastError()!=ERROR_ALREADY_EXISTS)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TdMod), &dMod);
Application->CreateForm(__classid(TMainForm), &frmMainForm);

Application->Run();
}
catch (Exception &exception)
{
delete frmStartUpForm;
Application->ShowException(&exception);
}
}
else
{
MessageBox(NULL,"程序已经运行","错误",MB_OK);
}
return 0;
}
windindance 2001-08-12
  • 打赏
  • 举报
回复
标准方法是用CreateMutex。
书生 2001-08-12
  • 打赏
  • 举报
回复
在Project--->的入口函数中,
WinAPI main()
{
try
{
//遍历一遍运行的窗口,如果有同名的窗口,那就是已经有相同程序运行了

//窗体初始化
}
catch()



}

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧