findwindow createmutex的用法求教

SmallBirdLove 2010-07-27 03:39:29
在一个公司看他们的代码:在一个dlg中的InitInstance()中看头有如下代码:
HANDLE hMutex=::CreateMutex( NULL,FALSE,"ImpImg");
if ( ::GetLastError()==ERROR_ALREADY_EXISTS )
{
HWND FindWnd = ::FindWindow(NULL,"ImpImg");
if ( FindWnd )
{ ::SetWindowPos( FindWnd,HWND_TOP,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE );
::ShowWindow( FindWnd,SW_SHOW ); ::SetFocus( FindWnd ); }
return FALSE;
}
它的工程名就是ImpImg,窗口名也是这个
问题一:
但是在第一次运行的时候hMutex创建的时候始终是一个无效句柄,然而,如果我改成:
HANDLE hMutex=::CreateMutex( NULL,FALSE,"Imp");
就可以了,不知道这是为什么?
问题二:
我明明创建了一个进程,但是用FindWnd函数返回的也是一个无效句柄,

之后我做了一个测试程序,就将上面的一段代码拷贝到InitInstance()中,却一点问题都没有
不知道这是什么原因,往大牛指教
...全文
117 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wind_breez 2010-07-27
  • 打赏
  • 举报
回复
你是否创建了窗口?没有窗口就没有窗口句柄啊。
SmallBirdLove 2010-07-27
  • 打赏
  • 举报
回复
msdn上没有详细讲解啊
SmallBirdLove 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 newxdlysk 的回复:]
这个MSDN上很详细的
[/Quote]

我的英文很不好~麻烦一下解释解释
newxdlysk 2010-07-27
  • 打赏
  • 举报
回复
这个MSDN上很详细的
SmallBirdLove 2010-07-27
  • 打赏
  • 举报
回复
补充说明:第一个工程创建了一个控制台程序,名字和主程序是一样的~会不会是这个原因呢?

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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