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

这篇具有很好参考价值的文章主要介绍了【C#】获得所有可见窗口信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【背景】

由于自己的瘦客户端上的Windows自带截图软件功能被阉割,所以自己写了一个,其中有窗口截图功能,涉及到获得所有可见窗口的信息。文章来源地址https://www.toymoban.com/news/detail-736694.html

【代码】

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();
        }

到了这里,关于【C#】获得所有可见窗口信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用Python写了一个下载网站所有内容的软件,可见即可下

    前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 今天我们分享一个用Python写下载视频+弹幕+评论的代码。 顺便把这些写成GUI,把这些功能放到一起让朋友用起来更方便~ 环境介绍: python 3.8 pycharm 2022专业版 免费使用教程文末名片获取 python资料、源码、教程福利皆: 点击此处跳转文末

    2024年02月09日
    浏览(43)
  • C#开发的OpenRA游戏之建造物品的窗口5

    前面分析了TAB窗口的建立和运行,现在关注它的子窗口,也就是ProductionPaletteWidget类实现的窗口,这个窗口主要用来显示所有可以创建物品的ICON图标。用户可以通过这个窗口实现物品创建,如下图所示:   比如要创建电厂,就是点击上面高亮显示的图标,就可以开始建造。可

    2024年02月09日
    浏览(30)
  • C#开发的OpenRA游戏之建造物品的窗口10

    前面已经分析完成建造物品的过程,从物品进入队列,直到物品按时间进行生产完成。那么生产完成之后,又是怎么样放置到游戏的地图里面的呢?本文就来分析这个问题。 前面可以看到,当物品建造完成时,会在右边的面板上显示建造完成: 在上面显示Ready的文字。这时候

    2024年02月12日
    浏览(32)
  • C#开发的OpenRA游戏之建造物品的窗口4

    前面分析了建造物品TAB窗口类ProductionTabsWidget,它是实现窗口显示内容绘制的,不过它还有一个逻辑处理类ProductionTabsLogic,在这个类实现一些功能配置,现在就来分析这个类。               ProductionTabs@PRODUCTION_TABS:                      Logic: AddFactionSuffixLogic

    2024年02月09日
    浏览(38)
  • Python实现获得所有拼音为某个拼音的所有汉字

    好久没有写博客了,这几年的开发让我感受良多,同时我也感觉到了我自己成长的还不够。所以,以后这里将会有我个人所有的项目经验总结,以及项目中使用到的一些方便的小工具也会写出来。 目录 前言 一、获取所有拼音为某个拼音的汉字。 二、拿到所有项目中的代码,

    2023年04月09日
    浏览(36)
  • C#开发的OpenRA游戏的游戏界面内鼠标处理窗口

    C#开发的OpenRA游戏的游戏界面内鼠标处理窗口 OpenRA游戏里,游戏上面所有物品显示,都是基于窗口容器。 前面也讨论过,其实就是基于ingame.yaml文件来布局和创建的, 在ingame.yaml文件里,根窗口Container@INGAME_ROOT,共有六个子节点: Children:     LogicKeyListener@GLOBAL_KEYHANDLER:   

    2024年02月11日
    浏览(33)
  • VSIX:C#项目 重命名所有标识符(Visual Studio扩展开发)

            出于某种目的(合法的,真的合法的,合同上明确指出可以这样做),我准备了一个重命名所有标识符的VS扩展,用来把一个C#库改头换面,在简单的测试项目上工作很满意,所有标识符都被准确替换。我还尝试用在C++项目上,问题就比较多了,因为VS并不能准确识别

    2024年02月05日
    浏览(42)
  • Alibaba(获得店铺的所有商品) API 接口

    为了进行电商平台 的API开发,首先我们需要做下面几件事情。 1)开发者注册一个账号 2)然后为每个alibaba应用注册一个应用程序键(App Key) 。 3)下载alibaba API的SDK并掌握基本的API基础知识和调用 4)利用SDK接口和对象,传入AppKey或者必要的时候获取并传入SessionKey来进行程序

    2024年02月09日
    浏览(29)
  • Elasticsearch:使用 count API 来获得所有文档的个数

    在我开始使用 Elasticsearch 的时候,我希望获得给定查询的文档总数。比如我们想对数据进行分页显示。从 Elasticsearch 7.0之后,为了提高搜索的性能,在 hits 字段中返回的文档数有时不是最精确的数值。Elasticsearch 限制了最多的数值为10000。我们知道 Search API 提供的计数不准确

    2024年02月15日
    浏览(29)
  • LeetCode 1423. 可获得的最大点数(很经典的一道固定窗口的滑窗题)

    题目传送门 几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 c a r d P o i n t s cardPoints c a r d P o in t s 给出。 每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k k k 张卡牌。 你的点数就是你拿到手中的所有卡牌的点数之和。 给你一个整

    2024年01月16日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包