我的界面上有个按钮,会激活另外的程序,如果这个应用程序没有启动,启动该程序。如果已经启动了,则将此程序跳到前台。我本来用FindWind(WNDCLASS, NULL)来查找相应窗口的。
但是现在的那个应用会自动生成一个afx:40000:...类名的窗口,类名在启动后会变化。请问哪位高手有办法吗?
但是现在的那个应用会自动生成一个afx:40000:...类名的窗口,类名在启动后会变化。请问哪位高手有办法吗?
解决方案 »
- 分割条,动态切换要出错,原因不明。
- 请教DirectShow的问题,用VMR播放,当锁定电脑回来后,FillBuffer不再被调用,发现调用FillBuffer的循环被CBaseOutputPin的m_pInputPin->Receive阻塞了,请问怎么处理?
- 那位朋友有论坛自动发贴机的源代码吗? 有的话发一份共享一下。
- 如何通过视图的指针得到该视图的句柄
- 急!怎样获得分辨率和控件的关系?
- 请问是否知道有安装在掌上电脑的c++编译器
- 如何通过语句改变CStatic的caption属性
- 如何用代码动态添加控件,并设定位置??
- 一个大学生的困惑!
- 怎么屏蔽掉对话框“将改动保存到无标题 是 否”
- 工资不高的进来抢分(大型图像的显示,放大处理)
- 急急急!我们使用别人的控件,在调用控件的redrawwindow后要在控件窗口上画些我们自己的东西,但由于我们无法判断控件重画已经完成,因此
CreateMutex
假设创建的是基于对话框的Single应用程序(指你要启动的程序)!
为你的应用程序类CSingleInstanceApp添加一个私有成员作为互斥量的句柄
private:
HANDLE m_hMutex;
然后修改函数InitInstance判断是否有其他实例在运行,有则退出。
BOOL CSingleInstanceApp::InitInstance()
{
CString strClassName="SingleInstance";
// 判断是否有一名为"SingleInstance"的mutex存在
m_hMutex = OpenMutex (MUTEX_ALL_ACCESS, FALSE, strClassName) ;
if (m_hMutex == NULL)
{
// m_hMutex不存在,表示没有其它实例在运行,创建一个m_hMutex
m_hMutex = CreateMutex (NULL, TRUE, strClassName) ;
}
else
{
// 如果m_hMutex存在,表示已经有一个实例在运行,
// 或者其它的程序创建了一个名为"SingleInstance"的m_hMutex
::AfxMessageBox("已经有一个实例在运行!",MB_OK|MB_ICONEXCLAMATION);
// 结束程序
return FALSE;
}
最后为应用程序类重载函数ExitInstance,在退出程序时释放互斥量。
int CSingleInstanceApp::ExitInstance()
{
if( m_hMutex != NULL )
ReleaseMutex(m_hMutex); return CWinApp::ExitInstance();
}