如何控制用户只能打开一次程序?在打开第二次的时候自动跳到该已经打开的程序

abcdfg 2005-03-21 11:03:31
工程是MFC Dialog based
主界面是一个没有title bar的全屏dialog
是不是findwindow就不能用了呢?
我不想改变目前的界面
请问有什么解决方法?谢谢!!
...全文
163 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldiqing 2005-03-22
  • 打赏
  • 举报
回复
首先根据cut9(切瓜玩)提供的方法创建互斥体.
发送消息的方法可以如下:
第一步:
用FindWindow函数根据类名或者窗口名找到你的窗口句柄。
HWND hWnd = FindWindow(NULL,"YourWindowName");
第二步:
发送消息
PostMessage(
hWnd, // handle to destination window
WM_YOURMSG, // message
NULL, // first message parameter
NULL // second message parameter
);

当然,在你的程序中要有相应的消息处理函数。
abcdfg 2005-03-22
  • 打赏
  • 举报
回复
up一下,请帮忙!
cut9 2005-03-21
  • 打赏
  • 举报
回复
具体一点:
CYourApp:InitInstance()
{
HANDLE hMtx = CreateMutex(NULL, TRUE, "myapponlystartonce");
if (NULL == hMtx)
return FALSE;

if ( ERROR_ALREADY_EXISTS == GetLastError())
{
//已经有了这个mutex,是上一个启动的yourpp程序创建的
//post a message to yourapp 比如: WM_MYMESSAGE_SHOWWINDOW
return FALSE;
}
}

在你的应用程序里面,登记WM_MYMESSAGE_SHOWWINDOW,并处理它。收到这个消息就
显示主窗口.



bobob 2005-03-21
  • 打赏
  • 举报
回复
up楼上
HuiChen 2005-03-21
  • 打赏
  • 举报
回复
CreateMutex
abcdfg 2005-03-21
  • 打赏
  • 举报
回复
//post a message to yourapp 比如: WM_MYMESSAGE_SHOWWINDOW

这个Message要如何post到我要的窗口呢?我试了hWnd填HWND_BROADCAST结果没收到,谢谢

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧