通过句柄关闭窗口的问题

wj709830140 2011-05-22 02:44:31
CPro1,CPro2是两个类,hWnd1是在CPro1中声明的变量。
在CPro1中: hWnd1=::FindWindow(NULL, "Tecplot 360 2010");
在CPro2中: CPro1 m_pro1;
::SendMessage(m_pro1.hWnd1,WM_CLOSE,0,0);

我用上述方法想在类CPro2中关闭hWnd1对应的窗口,但不行,没有反应。在类CPro1中用
::SendMessage(hWnd1,WM_CLOSE,0,0);可以关闭的。求解释。。。
...全文
909 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wj709830140 2011-05-23
  • 打赏
  • 举报
回复
解决了 谢谢各位指导
yeah2000 2011-05-23
  • 打赏
  • 举报
回复
找到exe直接kill掉进程
wj709830140 2011-05-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 ilyyangminglong1 的回复:]
pWnd=CWnd::FromHandle((HWND)hd);
if ( pWnd!=NULL )
{
pWnd->PostMessage(WM_QUIT,NULL,NULL);
}
[/Quote]
什么意思啊,不懂。
ilyyangminglong1 2011-05-23
  • 打赏
  • 举报
回复
pWnd=CWnd::FromHandle((HWND)hd);
if ( pWnd!=NULL )
{
pWnd->PostMessage(WM_QUIT,NULL,NULL);
}
MYNAMELIULI 2011-05-23
  • 打赏
  • 举报
回复
不懂来学习的
lyyscf 2011-05-23
  • 打赏
  • 举报
回复
如果你是在CPro2 中直接这么写的
CPro1 m_pro1;
::SendMessage(m_pro1.hWnd1,WM_CLOSE,0,0);

hWnd1=::FindWindow(NULL, "Tecplot 360 2010");
又不是在构它的构造函数中的话
hWnd1又没初始化,关得了才怪了

很像这个帖子
http://topic.csdn.net/u/20110517/17/d06f6378-140f-4759-b3a8-645d959d2577.html


wj709830140 2011-05-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lyyscf 的回复:]
如果你是在CPro2 中直接这么写的

C/C++ code
CPro1 m_pro1;
::SendMessage(m_pro1.hWnd1,WM_CLOSE,0,0);

hWnd1=::FindWindow(NULL, "Tecplot 360 2010");
又不是在构它的构造函数中的话
hWnd1又没初始化,关得了才怪了
有道理,那怎么才能获得第一个窗口的指针呢

jamig 2011-05-22
  • 打赏
  • 举报
回复
我能吧MFC创建的窗口关闭 但不能把C#创建的窗口关闭
龙行天下之Sky 2011-05-22
  • 打赏
  • 举报
回复
应该是m_pro1.hWnd1无效或者是m_pro1无效,你检查检查吧
jamig 2011-05-22
  • 打赏
  • 举报
回复
我也遇到这个问题了 现在在做dll注入 被注入的窗口只是出于未响应状态 但不能自动关闭
wj709830140 2011-05-22
  • 打赏
  • 举报
回复
有了解的大侠没啊,小弟比较急啊~
wj709830140 2011-05-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 oyljerry 的回复:]
CPro2 需要正确获得CPro1的对象,
还不如直接发送,CPro2中调用下面的代码

hWnd1=::FindWindow(NULL, "Tecplot 360 2010");
::SendMessage(hWnd1,WM_CLOSE,0,0);
[/Quote]
你这个方法我也试过了的,不行!可能是我把"Tecplot 360 2010"设为了主窗口的子窗口的原因吧,如下:
hWnd1=::FindWindow(NULL, "Tecplot 360 2010");
HWND hWnd2=AfxGetMainWnd()->m_hWnd;
::SetParent(hWnd1,hWnd2);
oyljerry 2011-05-22
  • 打赏
  • 举报
回复
CPro2 需要正确获得CPro1的对象,
还不如直接发送,CPro2中调用下面的代码

hWnd1=::FindWindow(NULL, "Tecplot 360 2010");
::SendMessage(hWnd1,WM_CLOSE,0,0);
wj709830140 2011-05-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 visualeleven 的回复:]
在CPro2中: CPro1 m_pro1;
::SendMessage(m_pro1.hWnd1,WM_CLOSE,0,0);
---------------------------------------------
这里调用的m_pro1.hWnd1窗口句柄是否有效?
[/Quote]
我也不知道,怎么检测呢?
Eleven 2011-05-22
  • 打赏
  • 举报
回复
在CPro2中: CPro1 m_pro1;
::SendMessage(m_pro1.hWnd1,WM_CLOSE,0,0);
---------------------------------------------
这里调用的m_pro1.hWnd1窗口句柄是否有效?

15,980

社区成员

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

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