Windows 中的 GetDesktopWindow 和 OpenInputDesktop API 有什么区别?

2023-11-23

两者的用法有什么区别GetDesktopWindow and OpenInputDesktopWindows 中的 API?


至于他们做什么:

GetDesktopWindow()返回“根”HWND调用线程当前与哪个桌面关联;也许更好的想法是“扎根HWND“。所有其他窗口/HWND桌面上的 s 在某种程度上是这个的后代。顶层窗口是直接子窗口。 (仅消息窗口是一种特殊情况,它们不会显示在 HWND 树上,但仍然属于桌面。)请注意,这与位于后台且包含所有文件和图标的窗口不同在它上面,这可能被正确地称为“Shell 桌面”窗口,您可以使用GetShellWindow()- 它恰好是一种特殊类型的顶级窗口。

OpenInputDesktop()返回HDESK当前处于活动状态并接收用户输入的桌面。每个桌面都有自己的树HWNDs 植根于根窗口或“桌面”窗口。

至于它们之间的关系,一旦你有了HDESK,你就可以使用SetThreadDesktop将该桌面设置为线程的默认桌面;然后调用 GetDesktopWindow 将返回该桌面的根 HWND。 (请注意,您首先必须拥有使用该 HDESK 的权限,例如,如果输入桌面是锁定桌面,则通常情况并非如此。)您还可以使用GetThreadDesktop()得到HDESK对于当前线程。

你可能会使用GetDesktopWindow()如果你想遍历HWND您的应用程序所在的桌面的树 - Spy++ 类型的应用程序可能会使用它来获取根窗口并使用GetWindow()或者类似的,也许。但大多数应用程序都乐于保持独立,因此不需要了解其他窗口。也许一种常见用途是检查任意窗口是否是顶级窗口:使用GetAncestor(hwnd, GA_PARENT),并检查返回值是否匹配GetDesktopWindow().

OpenInputDesktop()也许更很少使用;大多数应用程序只是坐在它们启动的桌面上并停留在那里。也许如果您编写了一个桌面切换实用程序来创建用户可以在多个桌面之间进行切换的桌面切换实用程序,那么该应用程序或其他一些应用程序可以使用它来确保它在当前桌面上,然后再显示 UI,但这确实不是一种常见的情况根本不。在某个阶段,可能可以编写类似放大镜或屏幕阅读器或其他具有 UI 的应用程序,希望在用户切换桌面时“跟随用户”,但这不适用于安全的锁定桌面 -因此,这些类型的应用程序必须使用另一种方式来处理这种情况。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows 中的 GetDesktopWindow 和 OpenInputDesktop API 有什么区别? 的相关文章

  • 如何在 Windows 上检查子进程是否被信号杀死

    问题 给定一个在 python 中启动的子进程 其代码类似于 import subprocess p subprocess Popen command stdout subprocess PIPE stderr subprocess PIP
  • shutdown.exe 参数带有破折号或斜杠?

    我使用的电话shutdown exe重新启动安装了不同版本 Windows 的计算机 对于 Windows XP 命令是 shutdown exe r f t 01 对于其他版本的 Windows 我使用 shutdown exe L R
  • 消失的系统托盘图标

    我正在使用 C 在 Visual Studio 2010 中创建系统托盘应用程序 当应用程序启动时 我创建线程和系统托盘图标 该图标显示 但是每当我将鼠标悬停在该图标上时 它就会消失 应用程序仍在运行 即使我单击按钮显示所有隐藏的图标 它也
  • 在VB.net中动态添加用户控件

    我在 Vb net Windows 应用程序 中制作了自定义 UserControl 如何将其动态添加到表单中 UserControl 本质上只是另一个类 它继承自 Control 因此您可以使用控件执行各种操作 但除此之外它只是一个类 因
  • 如何使用C++在Windows中获取MAC地址? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 无法启动 Windows 快捷方式

    我正在尝试使用 python 启动 Windows 我已经尝试了 os system subprocess call os startfile 等多种方法 但总是收到错误消息 指出路径不存在 我知道路径是正确的 因为我尝试在 CMD EXE
  • 在 Windows 上使用 C/C++ 开发时省略 msvcr100.dll?

    是否可以在 Windows 上使用 C C 进行开发而不链接到 msvcr100 dll 我知道这是 Windows 的标准 c 库 但我想知道如果我没有安装 Visual Studio 或 Redistributable 软件包 我的计算
  • java.nio.file.FileSystemException:该进程无法访问该文件,因为该文件正在被另一个进程使用

    我正在编写一个程序 该程序在第一次执行时将自身复制到特定文件夹 在 Linux 或 Windows 中工作 在 Linux 中它工作得很好 但是当我尝试在 Windows 上执行相同操作时 我收到以下错误 java nio file Fil
  • 避免 UAC 但使用 Windows 服务启动提升的进程

    我有一个非交互式服务作为 Windows 计算机上的特权系统用户运行 我需要它来启动给定的可执行文件作为提升的进程 我已设法使用 WTSGetActiveConsoleSessionId 以 SYSTEM 身份启动一个子进程 找到一个系统进
  • 如何阻止“gem”实用程序访问我的主目录?

    当我跑步时 gem install
  • 如何从 Java 访问 Windows 设备管理器中的信息?

    我有一个串行 USB 设备 并且其中多个设备可以连接到计算机 我需要查询和检索设备连接到的 COM 端口列表 在 Windows 设备管理器中 您可以获得当前连接的设备的 COM 端口 友好名称 该列表是动态的 从注册表中读取不工作 htt
  • C++/Windows:如何报告内存不足异常(bad_alloc)?

    我目前正在为 Windows MSVC 9 0 应用程序开发基于异常的错误报告系统 即异常结构和类型 继承 调用堆栈 错误报告和日志记录等 我现在的问题是 如何正确报告和记录内存不足错误 当发生此错误时 例如作为bad alloc抛出的ne
  • 当用户更改 Windows 中的语言键盘布局时如何通知?

    I want to show a message to user when the user changes the language keyboard layout of Windows for example from EN to FR
  • 无法使用 C++ 中的 Window 蓝牙 API 连接到蓝牙设备

    我仅使用 Windows 的蓝牙 API 创建了一个程序 该程序列出范围内的蓝牙设备 然后搜索特定的蓝牙设备 HC 05 蓝牙模块 如果搜索成功 程序将验证并设置设备的服务状态 以使用串行端口 GUID 1101 创建虚拟端口 我的目标是以
  • 关闭表单而不退出应用程序

    我目前正在开发一个小项目 希望得到一些帮助 我有两个表单 第一个是登录窗口 第二个是主程序 我遇到的问题是当我关闭时form1 with this Close 它正在退出整个程序 我有一种感觉 我需要使用线程或类似的东西 但我找不到合适的资
  • 在网络驱动器上安装带有 python win32 扩展的 python

    我需要保持大量 Windows XP 计算机运行相同版本的 python 并带有各种模块 其中之一是 python win32 我考虑过在所有客户端机器都安装的网络驱动器上安装python 然后只需调整客户端上的路径即可 Python 从网
  • WinVerifyTrust 检查特定签名?

    我正在为 Windows 实现一个进程提升助手 该程序将以提升模式运行并以管理员权限启动其他程序 而不会显示其他 UAC 提示 出于安全原因 我想确保只有使用我公司的 Authenticode 密钥进行数字签名的二进制文件才能执行 The
  • 虚拟内存澄清——大连续内存的分配

    我有一个应用程序 我必须在 Windows 上分配 使用运算符 new 相当大的内存空间 数百 MB 该应用程序是 32 位 我们现在不使用 64 位 即使在 64 位系统上也是如此 我启用了 LARGEADDRESSAWARE 链接器选项
  • 第三方库应该放在哪里?

    我为一个相当规模的 C 项目 http github com nickgammon mushclient具有许多依赖关系 问题是 该项目包含其所有依赖项的源代码 例如 pcre zlib 等 我想将项目精简为与程序本身相关的内容 是否有一些
  • 如何等到我启动的程序使用完该文件后才删除该文件?

    我一直在寻找一种方法来打开通过 Delphi 应用程序及其适当的应用程序保存到我的计算机上的文件 该文件存储在 SQL 数据库中的 Varbinary 字段中 加载到内存流中 然后通过 TMemoryStream 的 SavetoFile

随机推荐

  • 使用 GUID 的一部分作为 ID

    我正在开发 ASP Net MVC 应用程序 我的行动之一需要id作为参数 例如 public actionresult Detail Guid id return View 正如你所看到的 我正在使用Guid代替Int 这个问题更具装饰性
  • 是否可以知道哪些 SciPy / NumPy 函数在多个内核上运行?

    我试图明确找出 SciPy NumPy 中的哪些函数在多个处理器上运行 我可以例如在 SciPy 参考手册中读到 SciPy 使用了这个 但我更感兴趣的是到底哪些函数确实运行并行计算 因为并非所有函数都这样做 理想的情况当然是当您键入 he
  • GHCi 中的功能非详尽模式

    我想创建一个显示列表最后一个元素的函数 这是我的代码 ghci gt let myLast a gt a ghci gt let myLast error ghci gt let myLast x x ghci gt let myLast
  • “重新打开上次关闭的选项卡”导致显示上次 ajax 请求内容

    我正在使用 HTML 5 历史 api 在 ajax 请求发生时保存状态 并且如果用户请求没有 ajax 请求的同一页面 我会提供完整的 html 内容 浏览器的 重新打开最后关闭的选项卡 功能会带来最后的 ajax 请求内容 而无需访问服
  • 为什么错误处理在 Nodemailer 中不起作用?

    我正在尝试使用 nodemailer 设置一个非常简单的联系表单 它工作正常 但我的问题是它不处理错误 如果引发错误 页面应该重定向 但重定向不会发生并且应用程序停止运行 我一生都无法弄清楚为什么会发生这种情况 这是我的代码 if req
  • d3.js:有限制的平移

    我正在研究具有平移功能的基本线性图表 我设法通过限制图表元素的拖动范围d3 event translate values var tx Math max 0 d3 event translate 0 ty Math min 0 d3 eve
  • 创建 Hermetic Maven 构建

    我正在尝试创建一种可以实现密封构建的方法 同时仍然依赖于项目中的 SNAPSHOT 依赖项 出于示例的目的 假设我有一个项目 其依赖结构如下 other 1 2 SNAPSHOT mine 1 2 3 thing 3 1 SNAPSHOT
  • 在 PyQT5 中创建自定义小部件

    我想知道如何在 pyqt 中创建自定义小部件 我见过许多不同的 C 示例 以及一些 pyqt 的非描述性示例 但没有任何内容真正解释如何执行和实现它 特别是没有任何示例基本上不仅仅是修改后的 qt designer 输出 而且我正在从头开始
  • 如何从 HttpClient 响应访问标头? (角/离子)

    我使用的登录端点返回不记名令牌作为响应标头 正如我在 网络 Chrome 检查窗口中看到的那样 Response Headers Access Control Allow Credentials true Access Control Al
  • 向 TIdHttp 请求添加自定义标头,标头值包含逗号

    我正在使用 Delphi XE2 和 Indy 10 5 8 0 我有一个 TIdHttp 实例 我需要向请求添加自定义标头 标头值中包含逗号 因此它会自动解析为多个标头 我不希望它这样做 我需要自定义标头的标头值仍然是一个字符串 而不是根
  • 在基于Web的Spring范围中使用Thymeleaf处理HTML文件并将处理后的模板存储为字符串

    我正在尝试使用 thymeleaf 渲染 HTML 文件 并将生成的 HTML 内容保存在 String 变量中web based scopes of Spring这样我以后就可以用它来发送电子邮件或将内容转换为 pdf 我已经完成了中给出
  • 查找字符串中最短的重复模式

    我想知道是否有办法在 Octave Matlab 中进行模式匹配 我知道 Maple 10 有执行此操作的命令 但不确定我需要在 Octave Matlab 中做什么 所以如果一个数字是12341234123412341234模式匹配将是1
  • 为什么 &[T] 参数也接受 &Vec

    我正在阅读 Rust 书 即迷你grep项目 在那里我遇到了以下片段 fn main let args Vec
  • 计算文件中单词数的最简单方法

    我正在尝试以最简单的方式编写一个程序来计算 Scala 语言文件中单词出现的次数 到目前为止我有这些代码 import scala io Codec string2codec import scala io Source import sc
  • 在遍历表达式时提取实例变量的当前值

    我目前正在尝试编写一些将 C 表达式转换为文本的代码 为此 我不仅需要遍历表达式树 还需要评估其中的一小部分 以获得局部变量的当前值 我发现很难用语言来表达 所以这里是伪代码 缺少的部分在第一种方法中 public class Progra
  • 如何将时间戳转换为可读的日期/时间?

    我有一个 APIresult像这样给出时间戳1447804800000 如何使用 Javascript jQuery 将其转换为可读格式 您可以使用以下命令将其转换为可读日期new Date method 如果有特定的日期戳 可以通过以下方
  • 我应该如何理解 dis.dis 的输出?

    我想了解如何使用dis Python字节码的反汇编器 具体来说 应该如何解释输出dis dis or dis disassemble 这是一个非常具体的示例 在 Python 2 7 3 中 dis dis heapq nsmallest
  • 克隆整个对象图

    使用此代码序列化对象时 public object Clone var serializer new DataContractSerializer GetType using var ms new System IO MemoryStrea
  • (Hadoop) MapReduce - 链作业 - JobControl 不会停止

    我需要链接两个 MapReduce 作业 我使用 JobControl 将 job2 设置为依赖于 job1 它有效 输出文件已创建 但它并没有停止 在 shell 中它保持这种状态 12 09 11 19 06 24 WARN mapre
  • Windows 中的 GetDesktopWindow 和 OpenInputDesktop API 有什么区别?

    两者的用法有什么区别GetDesktopWindow and OpenInputDesktopWindows 中的 API 至于他们做什么 GetDesktopWindow 返回 根 HWND调用线程当前与哪个桌面关联 也许更好的想法是 扎