禁止一个实例多次运行? 禁止一个实例多次运行知道怎么做,但问题是当实例最小化时,再运行一次,实例主窗口不会显示在桌面上,还是最小化的状态。就好像“我的电脑”一样,当有一个“我的电脑”的窗口时,再双击“我的电脑”,窗口再次变成当前窗口。请问怎么才能作到这一点,谢了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://support.microsoft.com/kb/q243953/CreateMutex 在你的程序中处理一下,当发现以前的实例正在运行时,SendMessage给那个实例(进程),让它置前并设为活动的。 如果标题恒定 FindWindow否则 SetProp 设定某个标志GetProp + EnumWindow SetForegroundWindow() //改变Z-Order位置SetWindowLong() //窗口类型设置为TOPMOST 关于这个问题有很多讨论了, 请看:http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=138321&forum_id=-1 http://vchelp.net/cndevforum/subject_view.asp?subject_id=23697&forum_id=59 http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=22474&forum_id=-1 http://vchelp.net/cndevforum/subject_view.asp?subject_id=22474&forum_id=-1 -------------- BOOL CHlloApp::InitInstance(){ HANDLE hMutex=CreateMutex(null,TRUE,"MyHello"); if (GetLastError()==ERROR_ALREADY_EXISTS) return FALSE;//退出 ... ...} const WM_MYMSG=WM_USER+100;//自定义消息BOOL CHlloApp::InitInstance(){ HANDLE hMutex=CreateMutex(null,TRUE,"MyHello"); if (GetLastError()==ERROR_ALREADY_EXISTS) { PostMessage(HWND_BROADCAST,WM_MYMSG,0,0); return FALSE;//退出 } ... ...}//主窗口.h文件: //{{AFX_MSG(CADlg) //}}AFX_MSG afx_msg void OnMyMsg(WPARAM wp,LPARAM lp);//主窗口.cpp文件:BEGIN_MESSAGE_MAP(CADlg, CDialog) //{{AFX_MSG_MAP(CADlg) //}}AFX_MSG_MAP ON_MESSAGE(WM_MYMSG,OnMyMsg)END_MESSAGE_MAP()void CADlg::OnMyMsg(WPARAM wp,LPARAM lp){ ::SetWindowPos(this->m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE|SWP_SHOWWINDOW);} 求类似sockscap的源代码。 MSSQL2000在XP下为什么连不起数据源啊??? 一个有关静态拆分窗口的隐藏问题 一个有关CPropertysheet的初始化的问题 关于通过自定义ip头,发送给对方的oicq一个消息的问题(高手请进,初学者勿扰) 100分请教组合框的问题 这段多线程的代码为何非法操作? 关于帮助文件乱码的问题 CListView 中为什么只有column没有item 我来介绍我的网络传输文件的方法。听者有分。 关于HOOK KEYBOARD的问题!! 看这个格式的数据怎么读取?
否则 SetProp 设定某个标志
GetProp + EnumWindow
SetWindowLong() //窗口类型设置为TOPMOST
http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=138321&forum_id=-1
http://vchelp.net/cndevforum/subject_view.asp?subject_id=23697&forum_id=59
http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=22474&forum_id=-1
http://vchelp.net/cndevforum/subject_view.asp?subject_id=22474&forum_id=-1
--------------
{
HANDLE hMutex=CreateMutex(null,TRUE,"MyHello");
if (GetLastError()==ERROR_ALREADY_EXISTS)
return FALSE;//退出
...
...
}
{
HANDLE hMutex=CreateMutex(null,TRUE,"MyHello");
if (GetLastError()==ERROR_ALREADY_EXISTS)
{
PostMessage(HWND_BROADCAST,WM_MYMSG,0,0);
return FALSE;//退出
}
...
...
}
//主窗口.h文件:
//{{AFX_MSG(CADlg)
//}}AFX_MSG
afx_msg void OnMyMsg(WPARAM wp,LPARAM lp);//主窗口.cpp文件:
BEGIN_MESSAGE_MAP(CADlg, CDialog)
//{{AFX_MSG_MAP(CADlg)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_MYMSG,OnMyMsg)
END_MESSAGE_MAP()void CADlg::OnMyMsg(WPARAM wp,LPARAM lp)
{
::SetWindowPos(this->m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE|SWP_SHOWWINDOW);
}