c#如何获得系统所有窗口名称(包括隐藏窗口)

来源:百度知道 编辑:UC知道 时间:2024/05/30 19:18:27
我还只是个编程新手,在这里想请问大家一个问题,一直困惑我很久了的.
我想达到这几个功能效果:
1.我想获得系统当前打开的窗口名称(包括隐藏状态的,或者无程序实体但是窗体名称的)
2.在获得这些窗口名称后,如果更改其属性,让它们显示或隐藏.

举个例子,好比qq2009 sp2(最新版)的一个功能.
我们打开QQ的情况下,在xp进程管理器中 我们只能看到qq一个进程,当我们打开一个聊天窗口中,还只是qq一个进程.
qq新版本有一个锁定功能就是防止用户不在电脑面前的时候别人偷看其隐私
快捷键是"CTRL+ALT+L".当激活后,qq处于锁闭状态.如果有打开的聊天窗口也消失不见.懂点程序的人也猜的到,这可能是qq把聊天窗口给隐藏了.当我们解锁后,窗口又出来了.
为了验证我的想法,我用了一个工具,叫做精锐网吧辅助工具.其中有个功能就是窗口管理.可以查看当前系统所有已打开的窗口,以及所属进程和显示隐藏的更改.经过验证,证实了我的想法.
现在我也想做到这个工具的类似功能. 不知道有哪位高手能指点下.
希望是C#语言的!小弟在这谢谢了!

获得窗体的句柄可以用GetWindow方法获得窗体标题用GetWindowText方法,显示隐藏某个窗体用ShowWindow方法,给你举个例子

using System.Runtime.InteropServices;

private const int WS_VISIBLE = 268435456;//窗体可见
private const int WS_MINIMIZEBOX = 131072;//有最小化按钮
private const int WS_MAXIMIZEBOX = 65536;//有最大化按钮
private const int WS_BORDER = 8388608;//窗体有边框
private const int GWL_STYLE = (-16);//窗体样式
private const int GW_HWNDFIRST = 0;
private const int GW_HWNDNEXT = 2;
private const int SW_HIDE = 0;
private const int SW_SHOW = 5;

[DllImport("User32.dll")]
private extern static int GetWindow(int hWnd, int wCmd);
[DllImport("User32.dll")]
private extern static int GetWindowLongA(int hWnd, int wIndx);
[DllImport("user32.dll")]
private static extern bool GetWindowText(int hWnd, StringBuilder tit