| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:  注册  忘记密码
 
密 码:  
共有 5281 人关注过本帖
标题:怎样才能关掉任务栏上的窗口?如何获得控制权?
只看楼主 加入收藏
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
收藏
 问题点数:0 回复次数:17 
怎样才能关掉任务栏上的窗口?如何获得控制权?
我现在想实现一种功能。。。。。

就是:比如说一个QQ打开一个好友聊天窗口,如果直接强制结束那个聊天窗口的话整个QQ都被关闭了,如保才能用程序控制关闭任务栏上的窗口而不影响主程序的运行呢??

我观察了一下,好像新开一个聊天窗口就是打开一个新的线程,但是如何才能做到把这聊天窗口给结束而不至于影响到整个主QQ程序的运行??

可以向这个窗口发送WM_CLOSE消息吗??怎么发送???有那位好心人帮一下不?


问题提出的背景:现在的QQ外挂一般只能起到隐藏QQ的作用,但是如果那一个好友给你发了一个视频或是传送文件,它就会自动弹出来,,我想弄一个辅助的程序,当发现任务栏上的窗口增加时就把它关掉,但不要影响主程序(QQ)的运行。
搜索更多相关主题的帖子: 任务栏 窗口 控制权 好友 主程序 
2006-10-27 11:17
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
收藏
得分:0 
???????????????
没人帮吗???????????

写程序像做爱一样,质量的好坏完全取决于心情……
2006-10-27 11:48
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
收藏
得分:0 


再解释一下。。。。。。。
也就是能控制窗口,,,,,,最好是能给它发送一个 WM_CLOSE消息就可以了。。。。

但要保证它的主进程不能结束。。。。

写程序像做爱一样,质量的好坏完全取决于心情……
2006-10-27 11:52
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
为什么会关闭QQ主程序呢?
虽然这个打开的聊天对话框的class name和QQ主程序的class name相同,都是#32770,但是他们的caption不同,
所以你寻找窗口的时候,findwinsow的时候,首先先找到QQ主窗口的句柄。
HWND QMain_hWnd=::FindWindow("#32770","");//QQ主窗口的caption是空字符串。

然后来找这个窗口。
HWND QTalk_hWnd;
while(1)
{
HWND QTalk_hWnd=::FindWindow("#32770",NULL);
if(QTalk_hWnd&&QTalk_phnd!=QMain_hWnd)
break;
}
CWnd* QTalk_pWnd=CWnd::FromHandle(QTalk_phnd);
这就得到了聊天窗口的句柄。
=================================

上面是说错了,希望别误导大家。。。

[此贴子已经被作者于2006-10-27 12:23:53编辑过]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-10-27 12:16
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
收藏
得分:0 

大家帮一下呀。。。

要求低一点,求能向所有的任务栏窗口发送消息的方法就可以了
比如说系统自带的键 Win+D 就中以实现最小化所有的任务栏窗口,,,
那么肯定有方法可以向所有的当前任务栏窗口发送消息的方法了。

写程序像做爱一样,质量的好坏完全取决于心情……
2006-10-27 12:16
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
好象也不行

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-10-27 12:21
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
QQ程序太多个#32770了。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-10-27 12:21
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
收藏
得分:0 
以下是引用wfpb在2006-10-27 12:16:30的发言:
为什么会关闭QQ主程序呢?
虽然这个打开的聊天对话框的class name和QQ主程序的class name相同,都是#32770,但是他们的caption不同,
所以你寻找窗口的时候,findwinsow的时候,首先先找到QQ主窗口的句柄。
HWND QMain_hWnd=::FindWindow("#32770","");//QQ主窗口的caption是空字符串。

然后来找这个窗口。
HWND QTalk_hWnd;
while(1)
{
HWND QTalk_hWnd=::FindWindow("#32770",NULL);
if(QTalk_hWnd&&QTalk_phnd!=QMain_hWnd)
break;
}
CWnd* QTalk_pWnd=CWnd::FromHandle(QTalk_phnd);
这就得到了聊天窗口的句柄。

谢谢你版主,,,
不过我想知道 在那才能知道那一个程序的class name的呢?比如说我想知道淘宝网的淘宝旺旺的class name该如何处理呢?谢谢你


写程序像做爱一样,质量的好坏完全取决于心情……
2006-10-27 12:23
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
visual studio的工具里面有。spy++。打开以后,可以CTRL+F然后就指哪个窗口,就得到他的信息。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-10-27 12:25
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
收藏
得分:0 
以下是引用wfpb在2006-10-27 12:25:09的发言:
visual studio的工具里面有。spy++。打开以后,可以CTRL+F然后就指哪个窗口,就得到他的信息。


噢。。。
谢谢你版主,,,还是知识全了好呀。。
不像我。。。

那么,得到它的窗口句柄后直接用SendMessage发一个wm_close就可以了关闭了吧?


写程序像做爱一样,质量的好坏完全取决于心情……
2006-10-27 12:27
快速回复:怎样才能关掉任务栏上的窗口?如何获得控制权?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039093 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved