C# 获取所有桌面窗口信息
窗口标题、窗口类名、是否可见、是否最小化、窗口位置和大小、窗口所在进程信息
1 private static WindowInfo GetWindowDetail(IntPtr hWnd)
2 {
3 // 获取窗口类名。
4 var lpString = new StringBuilder(512);
5 User32.GetClassName(hWnd, lpString, lpString.Capacity);
6 var className = lpString.ToString();
7
8 // 获取窗口标题。
9 var lptrString = new StringBuilder(512);
10 User32.GetWindowText(hWnd, lptrString, lptrString.Capacity);
11 var title = lptrString.ToString().Trim();
12
13 // 获取窗口可见性。
14 var isVisible = User32.IsWindowVisible(hWnd);
15
16 // 获取窗口位置和尺寸。
17 User32.LPRECT rect = default;
18 User32.GetWindowRect(hWnd, ref rect);
19 var bounds = new Rect(rect.Left, rect.Top, rect.Right - rect.Left, rect.Bottom - rect.Top);
20
21 // 获取窗口所在进程信息
22 var processInfo = ProcessInfosByHwnd.GetInfo(hWnd);
23 return new WindowInfo(hWnd, className, title, isVisible, bounds, processInfo);
24 }
User32函数:
1 public static class User32
2 {
3 [DllImport("user32.dll", SetLastError = true)]
4 public static extern IntPtr GetWindow(IntPtr hwnd, uint windowType);
5
6 public delegate bool WndEnumProc(IntPtr hWnd, int lParam);
7 [DllImport("user32")]
8 public static extern bool EnumWindows(WndEnumProc lpEnumFunc, int lParam);
9
10 [DllImport("user32")]
11 public static extern IntPtr GetParent(IntPtr hWnd);
12
13 [DllImport("user32")]
14 public static extern bool IsWindowVisible(IntPtr hWnd);
15
16 [DllImport("user32")]
17 public static extern int GetWindowText(IntPtr hWnd, StringBuilder lptrString, int nMaxCount);
18
19 [DllImport("user32")]
20 public static extern int GetClassName(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
21
22 [DllImport("user32")]
23 public static extern void SwitchToThisWindow(IntPtr hWnd, bool fAltTab);
24
25 [DllImport("user32")]
26 public static extern bool GetWindowRect(IntPtr hWnd, ref LPRECT rect);
27
28
29 [StructLayout(LayoutKind.Sequential)]
30 public readonly struct LPRECT
31 {
32 public readonly int Left;
33 public readonly int Top;
34 public readonly int Right;
35 public readonly int Bottom;
36 }
37 }
Demo数据显示:
C# 获取所有桌面窗口信息的更多相关文章
- 基于IAccessible接口的QQ窗口信息获取的实现
这个技术现在已经封装成DLL免费开放给大家使用了,详情请加群221487171 可以访问官方网站下载 http://www.guihelper.com/ 主要技术(Microsoft Active A ...
- 窗口信息获取器 Spy4Win v0.20b 中文绿色版
软件名称:窗口信息获取器 Spy4Win v0.20b 中文绿色版软件类别:国产软件运行环境:Windows XP软件语言:简体中文授权方式:免费版软件大小:1.67 MB软件等级:整理时间:2012 ...
- selenium常用操作,查找元素,操作Cookie,获取截图,获取窗口信息,切换,执行js代码
目录: 1. 常用操作 2. 查找元素 3. 操作Cookie 4. 获取截图 5. 获取窗口信息 6. 切换 7. 执行JS代码 简介 selenium.webdriver.remote.webdr ...
- 如何HOOK桌面窗口消息
代码详见:http://download.csdn.net/detail/swanabin/6771465 需求:截获桌面窗口鼠标单击事件,解析所选中的桌面 Item,并将解析后的 item 信息发送 ...
- [C++]现行的试卷封面并获取学生题目得分信息以及学号信息的原型系统
大二的时候写的一个CV小玩意,最终决定还是把它放出来,也许会帮助到很多人,代码写的很丑,大家多多包涵.附加实验报告主要部分. 课题背景及意义: 本项目主要目标是设计一套能自动分析我校现行的试卷封面并获 ...
- C# 获取操作系统相关的信息
本文通过一个Demo,讲解如何通过C#获取操作系统相关的信息,如内存大小,CPU大小,机器名,环境变量等操作系统软件.硬件相关信息,仅供学习分享使用,如有不足之处,还请指正. 涉及知识点: Envir ...
- 【C语言】控制台窗口图形界面编程(二)窗口信息和填充缓冲区
目录 00. 目录 01. COORD结构体 02. SMALL_RECT结构 03. CONSOLE_SCREEN_BUFFER_INFO结构体 04. GetConsoleScreenBuffer ...
- java:JavaScript2:(setTimeout定时器,history.go()前进/后退,navigator.userAgent判断浏览器,location.href,五种方法获取标签属性,setAttribute,innerHTML,三种方法获取form表单信息,JS表单验证,DOM对象,form表单操作)
1.open,setTimeout,setInterval,clearInterval,clearTimeout <!DOCTYPE> <html> <head> ...
- 调用手机在线API获取手机号码归属地信息
手机在线(www.showji.com)始创于2001年,发展至今已拥有国内最准确.号段容量最大的手机号码归属地数据库系统, 目前号段容量将近33万条,每月保持两次以上规模数据更新,合作伙伴包括:百度 ...
随机推荐
- jmeter--负载测试
负载测试 1. jmeter插件处理 2. 下载负载测试计划所需要插件 3. 负载测试计划 4. 波浪形的测试计划--测试服务器的稳定性 一般用于测试稳定的场景测试(有规律的活动/场景/接口请求等等, ...
- AD域服务相关知识
一.活动目录及意义 活动目录:windows网络中的目录服务(Directory Service),即活动目录域服务(AD DS) 目录服务:目录和与目录相关服务 活动目录负责目录数据库的保存.新建. ...
- win10无管理员权限下以压缩包方式安装JDK8
使用场景:如果在没有管理员权限的情况下,无法运行.exe文件,可以使用这种方式安装,本次把JDK安装到D:\jdk-8u152 一:获取JDK8的压缩包 1.JDK8 华为镜像地址 2.将下载好的ex ...
- vue使用阿里oss上传
1.首先用包管理工具 npm install ali-oss --S 下载oss依赖包 2.在util文件里创建util.js文件,在该文件写入 export default { getClient: ...
- Switch问题
package com.company;public class Main { public static void main(String[] args) { Income[] incomes = ...
- Android笔记--案例:登录界面以及登录逻辑
登录界面的实现 就是说,界面的绘制,并没有什么难度,只要控制好空间的分配就可以了 登录的逻辑实现 获取验证码.忘记密码的界面跳转.登录的实现: 确认文本框的输入内容是否符合题意:
- 11.8 消除闪烁(2)(harib08h)
ps:看书比较急,有错误的地方欢迎指正,不细致的地方我会持续的修改 11.8 消除闪烁(2)(harib08h) 11.7 消除闪烁(1)(harib08g)存在的问题: 鼠标放在计时器上会有 闪烁, ...
- 基于对象的实时空间音频渲染丨Dev for Dev 专栏
本文为「Dev for Dev 专栏」系列内容,作者为声网音频算法工程师 李嵩. 随着元宇宙概念的引入,空间音频这项技术慢慢映入大家的眼帘.关于空间音频的基础原理,我们做过一期科普视频 -- 「空间音 ...
- Agora 教程丨如何实现15mins自主搭建一个教育平台?
[ 前言 ] 2020 年对于全球而言都是非常特殊的一年,人与人之间的"物理连结"受到了严重影响,日常的生活.工作大都也逐渐向线上转移.受此影响,大量的线下业务也加速了线上转型,这 ...
- (3) MasaFramework 入门第三篇,使用MasaFramework
首先我们需要创建一个MasaFramework模板的项目,项目名称TokenDemo,项目类型如图所示 删除Web/TokenDemo.Admin项目,新建Masa Blazor Pro项目模板 项目 ...