当我运行一个程序的时候,我将判断是否存在该程序已经运行的进程。如果没有进程运行那我将运行我的程序,否则我将已运行的进程激活并弹出其对话框,该怎么做呢?
就是在知道进程已经运行的情况下,如何弹出其运行的界面?
就是在知道进程已经运行的情况下,如何弹出其运行的界面?
解决方案 »
- vc2010用visual Assist x 滚动条问题
- OLE DB 连接删除 修改数据表问题,删除记录的时候成功但是数据库记录没删除
- dialog 用StretchBlt加载 了1.BMP图片,想刷新显示加载的2.bmp,此时1.bmp可以见。
- 无线视频的传输
- 关于Clistctrl类Getitemcount的问题
- 和大家讨论一个问题(没有分了,实在不好意思,只是出于对VC的兴趣)
- 麦克风插入拔出会触发WM_DEVICECHANGE消息么
- 在程序中如何控制数码相机
- 连微软给出的例子c2552.cpp在vc6.0下都无法通过!各位大哥请教了!
- 愿者请进,请各位留下自己的QQ或E-mail,以后大家可以多多交流!!!
- 怎么实现象word那样双击文档,就能打开
- 如何在vc中实现动态定制的弹出菜单?请大家多提建议。。。
ShowWindow(hWnd, SW_SHOW);
BringWindowToTop(hWnd);
第一个创建后,将自己的句柄写入
第二个创建时,发现已经有人创建了。则读出句柄,激活程序,自己退出。我有成功的应用//共享内存,防止重新启动HANDLE hMem; //共享内存句柄
HWND* pData; //共享内存分配的数据BOOL CreateShareMem();
void CloseShareMem();BOOL CreateShareMem()
{//创建共享内存,防止系统重复加载
#define MEM_NAME "MCENTER"
BOOL Reloaded=FALSE; hMem=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,sizeof(HWND),MEM_NAME);
if(hMem==NULL) return FALSE;
if(GetLastError()==ERROR_ALREADY_EXISTS) Reloaded=TRUE; pData=(HWND*)MapViewOfFile(hMem,FILE_MAP_WRITE,0,0,sizeof(HWND));
if(pData==NULL)
{
CloseHandle(hMem);
return FALSE;
} if(Reloaded) //如果是重复加载
{
HWND hWnd = *pData;
WINDOWPLACEMENT wPlace; wPlace.length=sizeof(wPlace);
if(!GetWindowPlacement(hWnd,&wPlace))
{
Application->MessageBoxA("系统可能正在运行!",
Application->Title.c_str(),MB_ICONINFORMATION);
CloseShareMem();
return FALSE;
}
if(wPlace.showCmd==SW_SHOWMINIMIZED) ShowWindow(hWnd,SW_RESTORE);
SetForegroundWindow(hWnd);
return FALSE;
}
else
{
*pData = Application->Handle;
return TRUE;
}
}
//---------------------------------------------------------------------void CloseShareMem()
{//关闭共享内存
UnmapViewOfFile(pData);
CloseHandle(hMem);
}
//---------------------------------------------------------------------完