【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();
        }
相关推荐
全栈小55 小时前
【C#】.net core,静态方法线程安全解析,面试时经常被问的线程安全就藏在里面
安全·c#·.netcore
l1t5 小时前
DeepSeek总结的DuckDB 如何更快地运行递归 CTE
java·开发语言·数据库·mysql·duckdb
HAPPY酷5 小时前
python的对象和方法
开发语言·python
橙露6 小时前
移动端客户端原生开发语言
开发语言
Demon--hx6 小时前
设计不能被继承的类
开发语言·c++
兔兔兔兔16 小时前
记录C++ 13
开发语言·c++·算法
码行山野赴时序归途6 小时前
从暴力到最优:三道 C 语言入门题的解法思路
c语言·开发语言·数据结构·算法·leetcode·排序算法
郑州光合科技余经理6 小时前
本地生活平台搭建:统一订单表与多后台切换怎么拆
java·开发语言·前端·系统架构·uni-app·php·ai编程
天下无敌笨笨熊6 小时前
C#视频开发心得
开发语言·c#·音视频
LccKyI7 小时前
C#基础编程 面试题汇总(三)
笔记·c#