| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5276 人关注过本帖
标题:怎样才能关掉任务栏上的窗口?如何获得控制权?
只看楼主 加入收藏
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
不是啊,我说了4楼说错了,不只一个#32770,有很多其他的,对不起,误导你了,但是我暂时还没想到怎么做。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-10-27 12:32
游戏使者
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: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 

你用EnumWindow函数不可以吗?不要用findwindow,EnumWindow是枚举所有窗口


c++/C + 汇编 = 天下无敌
2006-10-27 12:58
Bekky
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:354
专家分:0
注 册:2006-5-29
收藏
得分:0 
我也没什么好办法,我把我的想法说一下。
首先,我要说明一点,其实任务栏也是一个窗口,他上面显示的只是一些图标,不是我们所认为的窗口。
既然他不是我们认为的窗口,那就从另外的方法着手:
1.GetActiveWindow()得到当前活动窗口句柄,然后判断,我看了一下QQ所有窗口的类名都是#32770,所以我们要再加一个条件。
如果类名是#32770,那么我们再用GetWindowText();看标题里面是否包含相关文字,比如:消息发送窗口,那么就看是否包含"消息发送",如果是就SendMessage,发送WM_CLOSE,不是就空转。


行的话给大家打个招呼!!!
呵呵!!!

[此贴子已经被作者于2006-10-27 14:24:00编辑过]


我的编译环境为WinXp + VC 6.0 http://blog..cn/yobo
2006-10-27 14:20
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
收藏
得分:0 
谢谢。。。。。
谢谢楼上的各位版主。。。。。。

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

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

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

谢谢了!

写程序像做爱一样,质量的好坏完全取决于心情……
2006-10-27 14:51
Bekky
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:354
专家分:0
注 册:2006-5-29
收藏
得分:0 
把桌面上所有可见窗口都关掉

BOOL EnumWindows(
WNDENUMPROC lpEnumFunc, // pointer to callback function
LPARAM lParam // application-defined value
);
EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
if(GetWindowLong(hwnd,GWL_STYLE) & WS_VISIBLE)
{

::ShowWindow(hwnd,SW_HIDE);
::SendMessage(hwnd,WM_CLOSE,0,0);
return 1;
}

}

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


我的编译环境为WinXp + VC 6.0 http://blog..cn/yobo
2006-10-27 15:11
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
收藏
得分:0 
谢谢。。。。
谢谢大家。。
问题已解觉。。
是用ENUMWINDOW实现的。。。
再加一个窗口标题关键字的搜索。。。。

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

写程序像做爱一样,质量的好坏完全取决于心情……
2006-10-28 12:58
X二毛
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-10-23
收藏
得分:0 
把QQ主程序放到调试器里去调一下吧,HOOK下他关闭聊天窗口那个函数

[此贴子已经被作者于2006-10-29 14:14:44编辑过]


2006-10-29 14:14
快速回复:怎样才能关掉任务栏上的窗口?如何获得控制权?
数据加载中...
 
   



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

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