我用一下代码做到了,但我觉得不大好,因为窗口名是可能被其他应用程序重的,不用mutex,还有其他办法吗?还有mfc下的ClassName好像不能改
BOOL CCmApp::InitInstance()
{
// 防止应用程序启动两次
HWND hwnd = FindWindow(NULL, "我的窗口名");
if ( hwnd )
{
SetForegroundWindow( hwnd );
return FALSE;
}
}
BOOL CCmApp::InitInstance()
{
// 防止应用程序启动两次
HWND hwnd = FindWindow(NULL, "我的窗口名");
if ( hwnd )
{
SetForegroundWindow( hwnd );
return FALSE;
}
}
解决方案 »
- 关于主窗口的指针
- 如何安全退出线程
- 这种列表框的搜索如何实现?
- 请问哪里可以下载OpenGL2.0的SDK?
- ** 请教 DLL 中返回数组,并在Excel VB中调用的问题 ???
- 高分求教关于网络编程中用ADO调用SQL SERVER2000数据库的问题
- 在多文档的project中,childfrm.h和.cpp的作用是什么??
- 怎么得到一个进程的句柄
- 请用过WIN2000附件中的图象处理程序的同志看过来。我想实现其中查看菜单项的灰度级功能,这个功能能使黑白图象变得清晰。请问其中奥妙,是不是单纯的腐蚀计算
- 线程中使用postmessage
- 图象高手帮忙,怎样用vc++,播放flash ,*.gif,文件(急用!在线等)
- 请指教:在Win2000下,如何屏蔽CTRL+ALT+DEL等系统键?
#define UNIQUE_NAME "{C7C914E2-46C6-11d4-9059-xxxxxxx}"
这个值可以从VSTOOL中的工具生成在APP中
BOOL CXXXXpp::InitInstance()
{
HANDLE m_hOneInstance;
m_hOneInstance=::CreateMutex(NULL,FALSE,UNIQUE_NAME);
if (GetLastError()==ERROR_ALREADY_EXISTS)
{
AfxMessageBox("Program is Already Run!");
return FALSE;
}
。
}就可以了
如何只启动应用程序的一个实例
http://www.ccw.com.cn/htm/app/aprog/01_11_27_2.asp
Registermessage
在共享段里设置一个变量
当程序启动时发出自定义消息
检查变量值如果为1就推出
如果为0就启动