【C#】获得所有可见窗口信息

【背景】

由于自己的瘦客户端上的Windows自带截图软件功能被阉割,所以自己写了一个,其中有窗口截图功能,涉及到获得所有可见窗口的信息。

【代码】

csharp 复制代码
public WindowInfo[] GetAllDesktopWindows()
        {
            //用来保存窗口对象 列表
            List<WindowInfo> wndList = new List<WindowInfo>();

            //enum all desktop windows 
            EnumWindows(delegate (IntPtr hWnd, int lParam)
            {
                WindowInfo wnd = new WindowInfo();
                StringBuilder sb = new StringBuilder(256);
                Rect rcowner = new Rect();


                //get hwnd 
                wnd.hWnd = hWnd;


               
                //judge if visible
                if (IsWindowVisible(hWnd) )
                {
                    //get window rect
                    GetWindowRect(hWnd, ref rcowner);
                    wnd.rc = rcowner;
                    if ((rcowner.Left - rcowner.Right) != 0 && (rcowner.Top - rcowner.Bottom) != 0)
                    {
                        //get window name  
                        GetWindowTextW(hWnd, sb, sb.Capacity);
                        wnd.szWindowName = sb.ToString();

                        //get window class 
                        GetClassNameW(hWnd, sb, sb.Capacity);
                        wnd.szClassName = sb.ToString();

                        //get window info
                        uint x=0;
                        GetWindow(hWnd, x);

                        //add it into list 
                        wndList.Add(wnd);
                    }
                }
                return true;
            }, 0);

            return wndList.ToArray();
        }
相关推荐
Alt.96 分钟前
SpringMVC基础三(json)
java·开发语言
搬砖工程师Cola6 分钟前
<C#>在 C# .NET 中,使用 LoggerExtensions方法创建日志
开发语言·c#·.net
小学生搞程序21 分钟前
学习Python的优势体现在哪些方面?
开发语言·python·学习
yezipi耶不耶22 分钟前
Rust入门之迭代器(Iterators)
开发语言·后端·rust
Yolo566Q25 分钟前
当气象水文遇见R语言——破解时空数据的“达芬奇密码“
开发语言·r语言
weixin_493202631 小时前
R语言网状Meta分析---Meta回归(1)(基于gemtc)
开发语言·回归·r语言
muxue1781 小时前
go:实现最简单区块链
开发语言·后端·golang
Achou.Wang1 小时前
go语言内存泄漏的常见形式
开发语言·golang
旅行的橘子汽水1 小时前
【C语言-全局变量】
c语言·开发语言·数据库
晴天毕设工作室2 小时前
计算机毕业设计指南
java·开发语言·python·计算机网络·课程设计