首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Windows 系统上用 .NETC# 查找所有窗口,并获得窗口的标题、位置、尺寸、最小化、可见性等各种状态

---- 需要使用的 API 枚举所有窗口仅需要使用到 EnumWindows,其中需要定义一个委托 WndEnumProc 作为传入参数的类型。 剩下的我们需要其他各种方法用于获取窗口的其他属性。...IsWindowVisible 判断窗口是否可见 GetWindowText 获取窗口标题 GetClassName 获取窗口类名 GetWindowRect 获取窗口位置和尺寸,为此我们还需要定义一个结构体...FindAll 方法,我提供了一个默认参数,可以指定如何过滤所有枚举到的窗口。...如果不指定条件,将仅查找可见窗口。 /// /// 过滤窗口的条件。...如果设置为 null,将仅查找可见窗口。 /// 找到的所有窗口信息。

1.8K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    显示文件和文件夹的关联图标和说明

    INTEGER fWinIni DECLARE INTEGER GetDeviceCaps IN gdi32; INTEGER hdc, INTEGER nIndex DECLARE...例如,若要获取 DBF 文件的这些关联,第一步是找到“HKEY_CLASSES_ROOT.dbf”注册表项。此项的默认值为“Visual.FoxPro.Table”。...此项的“DefaultIcon”子项的值为“C:\Program Files\Microsoft Visual FoxPro 9\vfp9.exe,-103”。...此资源包含操作系统在需要时用于表示视觉 FoxPro DBF 文件的几个图标;例如,在资源管理器窗口中显示文件列表时。 资源查看器显示此资源以及存储在 VFP9 可执行文件中的其他资源。...没有单一的规则,寻找关联的方法即使不是混乱,也是棘手的。走这条路需要相当广泛的编码。幸运的是,MS费心在SHGetFileInfo API调用中隐藏了该过程的复杂性。

    19541

    DllMain中不当操作导致死锁问题的分析——DllMain中要谨慎写代码(完结篇)

    之前几篇文章主要介绍和分析了为什么会在DllMain做出一些不当操作导致死锁的原因。本文将总结以前文章的结论,并介绍些DllMain中还有哪些操作会导致死锁等问题。...》中论证的11个特性: Dll的加载不会导致之前创建的线程调用其DllMain函数。...即使不出现循环依赖,如果出现《DllMain中不当操作导致死锁问题的分析——线程中调用GetModuleFileName、GetModuleHandle等导致死锁》中第三个例子的情况,也会死锁的。...D 使用User32或Gdi32中的函数         User32和Gdi32中部分函数在调用的底层会加载其他DLL。 E 使用托管代码         运行托管代码需要加载其他DLL。...案例详见《DllMain中不当操作导致死锁问题的分析——线程中调用GetModuleFileName、GetModuleHandle等导致死锁》中例子。

    1.6K20

    C#窗口句柄

    大家好,又见面了,我是你们的朋友全栈君。 在Windows中,句柄是一个系统内部数据结构的引用。...例如当你操作一个窗口,或说是一个Delphi窗体时,系统会给你一个该窗口的句柄,系统会通知你:你正在操作142号窗口,就此你的应用程序就能要求系统对142号窗口进行操作——移动窗口、改变窗口大小、把窗口极小化为图标等...实际上许多 Windows API函数把句柄作为它的第一个参数,如GDI(图形设备接口)句柄、菜单句柄、实例句柄、位图句柄等,不仅仅局限于窗口函数。...换句话说,句柄是一种内部代码,通过它能引用受系统控制的特殊元素,如窗口、位图、图标、内存块、光标、字体、菜单等。...,//窗口句柄 StringBuilder lpString,//标题 int nMaxCount //最大值 ); //获取类的名字 [DllImport("user32

    58730

    WPF 修改屏幕亮度

    在 WPF 中可以使用 Dxva2 或 GDI 的方法调整屏幕亮度或获取屏幕亮度 比较推荐使用 Dxva2 的方法修改亮度,但不是所有的屏幕都支持的。...假定某个设备有多个屏幕,此时可以使用 User32 的 MonitorFromWindow 方法获取某个窗口所在的屏幕,此时根据这个屏幕的返回的 GetMonitorBrightness 判断是否支持...Dxva2 的方法 如果 Dxva2 的方法不支持,那么尝试使用 GDI 的方式,下面请让我告诉大家两个方法如何使用 先定义 AdjustScreenByDxva2 类,这个类通过 dxva2.dll...GetBrightness 返回 false 那么此屏幕不支持通过 dxva2 设置亮度 此时可以尝试使用 GDI 的方法,使用 GDI 的方法只支持设置主屏幕,不能根据传入的窗口获取窗口所在的屏幕的方式设置某个屏幕的亮度...,只需要使用 AdjustScreenBuilder.CreateAdjustScreen 获取修改屏幕亮度的对象,通过这个对象就可以设置或获取屏幕亮度 using System; using System.Windows

    1K10

    win32 api函数_c调用webapi接口

    前言 如果要在Windows上面写程序,就不得不了解一些 Win32Api 的使用,Win32 Api 在 C / C++的环境中使用非常的方便,直接调用头文件 Windows.h>...使用就行了,但在 C#中不会这么简单,需要在指定的模块之中导入想要的Win32,下面我们来学习一下如何在C#之中使用Win32 Api . . . ---- 在测试Win32 Api 之前,我先教大家如何获取有窗口的进程信息...,代码如下: 有窗口的进程,它的窗口句柄不会为 0,所以我们只需在所有运行的程序之中判断一下即可,下面是效果: 这些都是我所运行有窗口的进程 . . . ---- Win32 Api 使用 首先我们准备一个额外的窗口...,用于测试 Api: 准备两个按钮,一个用于显示上面的窗口,另一个用于测试 Api: 导入 Win32 Api: User32 表示导入的 Api所在模块 CharSet 表示字符集 下面的是一个...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    1.3K20

    问题探讨01: 如何使用鼠标滚轮使单元格中的数值增减?

    WH_MOUSE = 7 Public Const WM_RBUTTONDOWN = &H204 Public Const WM_MOUSEWHEEL = &H20A Sub BeginHK() '获取当前的线程...于是,继续上网搜索资料,终于查到一段: 我们知道VB应用程序响应的Windows传来的消息,需要通过VB解释。...可是很不幸,虽然VB解释所有的消息,却只让用户程序在事件中处理部分消息,VB自己处理其他的消息,或者忽略这些消息。...这样我们就可以在VB应用程序中编写自己的窗口处理函数,通过AddressOf 运算符将在VB中定义的窗口地址传递给窗口处理函数,从而绕过VB的解释器,自己处理消息。...有没有哪位朋友在这方面有研究的,可否指教一下:如何捕捉鼠标滚轮的向前或向后滚动?

    1.9K10

    浅谈window桌面GUI技术及图像渲染性能测试实践

    Windows的图形界面架构 从Windows Vista之后,desktop composition的部分就由Desktop Window Manager完成了(当然是启用Aero的情况下,Windows...Win32程序中,所有窗口和控件都是一个窗口类的实例,都拥有一个窗口句柄,窗口对象属于内核对象,由Windows子系统来维护。...Windows子系统为标准控件定义了窗口类,并使用GDI来绘制这些标准控件。 Win32程序采用消息循环机制: ?...怎么获取图像渲染的响应时间?...这里我们折中使用实时判断标志位RGB像素点的方法来判断图片渲染的结果 首先,我们会使用取色器采样几个最后图像渲染完成的坐标像素点RGB值 原理其实很简单,只需要两步 鼠标移动的时候获取鼠标光标的位置 鼠标单击获取当前鼠标光标的位置的

    3.9K30

    挂钩图形内核子系统

    当今的作弊行为主要是使用内部Directx挂钩或窗口覆盖图来可视化隐藏的游戏信息。这两种方法已被广泛记录,但其他更不起眼的方法包括在Windows内核中挂接图形例程,正如我们将在本文中演示的那样。...dxgkrnl 在dxgkrnl.sys中实现的Microsoft DirectX图形内核子系统是DirectX图形基础结构(DXGI)设备驱动程序接口的一部分。...我们决定专注于D3DKMTSubmitCommand gdi32!D3DKMTSubmitCommand用于将命令缓冲区提交给支持虚拟寻址的图形驱动程序。...这些命令完全在用户模式下生成,仅通过图形内核子系统传递给图形驱动程序。它的前身DxgkDdiRenderKm仅用于“旧版”图形驱动程序,但看起来也很有趣,因为它很可能产生相同的结果。...GDI32 D3DKMTSubmitCommand被调用,它通过系统呼叫路由NtGdiDdDDISubmitCommand,这是在任何Win32驱动程序实现的(一些Windows版本已经在它实施win32kbase

    3.2K392

    创建可调大小的用户窗体——使用Windows API

    标签:VBA,Windows API 在使用VBA创建用户窗体时,通常会将其设置为特定的大小。然而,通过一些编码技巧,可以为其实现类似的调整大小效果。...ResizeWindowSettings(frm As Object, show As Boolean) Dim windowStyle As Long Dim windowHandle As Long '获取...Windows内存中对窗口和样式位置的引用 windowHandle = FindWindowA(vbNullString, frm.Caption) windowStyle = GetWindowLong...WS_THICKFRAME) End If '应用新样式 SetWindowLong windowHandle, GWL_STYLE, windowStyle '使用新样式重新创建用户窗体窗口...Double Private Sub UserForm_Initialize() '调用Window API启用调整大小 Call ResizeWindowSettings(Me, True) '获取要调整大小的对象的右下角定位点位置

    45030

    c语言findwindowex函数用法,VB中findwindowex函数的用法?

    大家好,又见面了,我是你们的朋友全栈君。 FindWindowEx函数 函数功能:在窗口列表中寻找与指定条件相符的第一个子窗口 。 该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。...参数:(1)hwndParent:要查找的子窗口所在的父窗口的句柄(如果设置了hwndParent,则表示从这个hwndParent指向的父窗口中搜索子窗口)。...Windows NT5.0 and later:如果hwndParent是HWND_MESSAGE,函数仅查找所有消息窗口。 (2)hwndChildAfter :子窗口句柄。...查找从在Z序中的下一个子窗口开始。子窗口必须为hwndParent窗口的直接子窗口而非后代窗口。如果HwndChildAfter为NULL,查找从hwndParent的第一个子窗口开始。...返回值:Long,找到的窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError 如果函数成功,返回值为具有指定类名和窗口名的窗口句柄。如果函数失败,返回值为NULL。

    81010

    VBA使用API_03:创建窗体

    使用Excel VBA要创建窗体非常的简单,直接插入一个用户窗体就可以了,VBA已经封装好了窗体,而且具有很多功能以及控件。...注册窗体需要用到RegisterClass,必须先要注册一个窗体类,才能在第二步创建窗体CreateWindowEx进行创建,创建好后必须使用ShowWindow才能显示出来,窗体显示出来之后,如果没有其他要执行的程序...所以必须要循环接收消息以保证不退出程序,具体要处理的消息Windows已经做好了默认的DefWindowProc回调函数来处理,在RegisterClass的时候可以进行指定回调函数,我们可以在回调函数里去捕获消息进行处理...SW_SHOWNORMAL = 1 Public Const WM_DESTROY = &H2 Public Const WM_LBUTTONDOWN = &H201 Sub VBAMain() '初始化注册窗口类所需要的数据...WndProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long '仅处理

    1.9K20

    通过 Windows 用户模式回调实施的内核攻击

    原文链接在文后可见。 摘要 十五年之前,Windows NT 4.0 引入了 win32k.sys 来应对旧的客户端-服务端图形子系统模型的固有限制。...gSharedInfo,仅 Windows 7)和内核模式(win32k!gSharedInfo)都存在一个指向该结构体的指针。 用户句柄表中的每项都被表示为 HANDLEENTRY 结构体。...bType 值定义,并且在 Windows 7 下其取值范围从 0 到 21,可见下表。...由于用户模式回调需要一个位置存储例如陷阱帧等线程状态信息,Windows XP 和 2003 会扩大内核栈以确保足够的空间可用。...为了达到追踪先前的栈等目的,Windows 在栈的基地址位置为 KSTACK_AREA 结构体保留空间,紧随其后的是构造的陷阱帧。 kd> dt nt!

    1.7K40

    VC Windows API获得桌面所有窗口句柄的方法

    大家好,又见面了,我是全栈君 VC Windows API应用之GetDesktopWindow ——获得桌面所有窗口句柄的方法 Windows API ---- Windows 这个多作业系统除了协调应用程序的执行...、分配内存、管理资源…之外, 它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序...WIN32 API也就是Microsoft Windows 32位平台的应用程序编程接口。 GetDesktopWindow ---- 函数功能:该函数返回桌面窗口的句柄。桌面窗口覆盖整个屏幕。...桌面窗口是一个要在其上绘制所有的图标和其他窗口的区域。 函数原型:HWND GetDesktopWindow(VOID) 参数:无。 返回值:函数返回桌面窗口的句柄。...(桌面窗口)句柄 【返回值】   Long,桌面窗口的句柄 获得桌面所有窗口句柄的方法 ---- 创建项目 文件->新建->项目… 编写方法 // GetDesktopWindow.cpp : 定义控制台应用程序的入口点

    1.7K31
    领券