【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();
        }
相关推荐
千亦学不会编程1 小时前
C# 枚举 详解
c#
风逸hhh2 小时前
python打卡day29@浙大疏锦行
开发语言·前端·python
ᖰ・◡・ᖳ2 小时前
JavaScript:PC端特效--缓动动画
开发语言·前端·javascript·css·学习·html5
hy____1233 小时前
C++多态的详细讲解
开发语言·c++
小葡萄20253 小时前
黑马程序员C++2024版笔记 第0章 C++入门
开发语言·c++·笔记
万物此臻3 小时前
C#编写软件添加菜单栏
开发语言·c#
RongSen333 小时前
Python海龟绘图(Turtle Graphics)核心函数和关键要点
开发语言·python
小贾要学习3 小时前
【C语言】贪吃蛇小游戏
c语言·开发语言·游戏
程序员爱钓鱼4 小时前
defer关键字:延迟调用机制-《Go语言实战指南》
开发语言·后端·golang
免檒4 小时前
Go内存管理
开发语言·网络·golang·操作系统