在窗口还没create时调用
ATOM g_atom;
bool therehaveone()
{
g_atom = GlobalFindAtom("此处放你自已有特征的串,以免与其它程序重复!")
if(g_atom==0)
g_atom = GlobalAddAtom("此处放你自已有特征的串,以免与其它程序重复!"); }
else
return true;
return false;
}
千万不要忘了在程序退出前调用,
GlobalDeleteAtom(g_atom);
否则就嘿嘿....
ATOM g_atom;
bool therehaveone()
{
g_atom = GlobalFindAtom("此处放你自已有特征的串,以免与其它程序重复!")
if(g_atom==0)
g_atom = GlobalAddAtom("此处放你自已有特征的串,以免与其它程序重复!"); }
else
return true;
return false;
}
千万不要忘了在程序退出前调用,
GlobalDeleteAtom(g_atom);
否则就嘿嘿....
实例时,自动激活第1个实例?
ATOM g_atom;
bool therehaveone()
{
g_atom = GlobalFindAtom("此处放你自已有特征的串,以免与其它程序重复!")
if(g_atom==0)
{
g_atom = GlobalAddAtom("此处放你自已有特征的串,以免与其它程序重复!"); }
}
else
{
SendMessage( HWND_BROADCAST,ID_IM_RUNNING , NULL , NULL );
return true;
}
return false;
}void XXX::OnImRunning()
{
//激活你的程序就可
}对于CreateProcess应该说是不会出问题的,不过它那一大堆参数着实让人头痛,你可以找一下新出版的API参考大全看一下,里在有很详细的说明
YOUR_MESSAGE_ID;
应该使用注册消息,
UINT g_uYourMessage=RegisterWindowMessage(_T("此处放你自已有特征的串,以免与其它程序重复"));
我认为自定义所有消都应该这么用,以该其它程序也采用这种方法,保证不是因为自已的程序导至兼容性的问题,
void XXX::OnImRunning()
{..}是不能用的
应在最顶层的窗口中处理这个
LPRESULT CMainFrame::WndProc(UINT message,WPARAM wParam,LPARAM lParam)
{
//...
if(message==g_uYourMessage)
{
/..激活你的程序
return 0;
}
return CFrameWnd::WndProc(message,wParam,lParam);
}