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

就是:比如说一个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
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
收藏
得分:0 

大家帮一下呀。。。

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

写程序像做爱一样,质量的好坏完全取决于心情……
2006-10-27 12:16
游戏使者
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
游戏使者
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
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
收藏
得分:0 
以下是引用wfpb在2006-10-27 12:32:02的发言:
不是啊,我说了4楼说错了,不只一个#32770,有很多其他的,对不起,误导你了,但是我暂时还没想到怎么做。

没事,,,
现在我想降低一点要求应该好做一点吧?
就是关闭所有的任务栏中显示的窗口。。。。。。
有办法实现不???
我也查到了一些资料,不过还没有实验是不是能关闭所有的任务栏的窗口呢。。。
谢了!

现把代码分享如下:
// getaskmanwnd.cpp (Windows NT/2000)
//
// This example will show you how you can obtain a handle to the
// Windows Taskbar window.
//

#include <windows.h>
#include <stdio.h>


// User32!GetTaskmanWindow (NT specific!)
//
// This function returns a handle to the window that ownes the taskbar buttons
//
// HWND GetTaskmanWindow()
//
typedef HWND (WINAPI *PROCGETTASKMANWND)(void);


PROCGETTASKMANWND GetTaskmanWindow;


void main(int argc, char* argv[])
{
if (argc<2)
{
printf("Usage:\n\ngetaskmanwnd.exe S|H\n");
return;
}

HMODULE hUser32 = GetModuleHandle("user32");
if (!hUser32)
return;

GetTaskmanWindow = (PROCGETTASKMANWND)GetProcAddress(hUser32,"GetTaskmanWindow");
if (!GetTaskmanWindow)
return;

HWND hWnd = GetTaskmanWindow();

if (!hWnd)
return;

if (*argv[1]=='H' || *argv[1]=='h')
ShowWindow(GetParent(hWnd),SW_HIDE);
else
ShowWindow(GetParent(hWnd),SW_SHOW);

}



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

好像#32770是对话框类。。我查了几个对话框就这个类。。。

希望大家能帮俺一把呀。。。

我现在程序的目的是获得所有任务栏的窗口句柄,,,然后想办法把它关闭就可以了。(没有必要实现一定是QQ聊天)

谢谢了!

写程序像做爱一样,质量的好坏完全取决于心情……
2006-10-27 14:51
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
收藏
得分:0 
谢谢。。。。
谢谢大家。。
问题已解觉。。
是用ENUMWINDOW实现的。。。
再加一个窗口标题关键字的搜索。。。。

真的非常感谢各位版主一直对我的帮助。。。。

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



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

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