拦截窗口窃取 Windows 全局焦点的尝试

2023-12-10

我是一名开发人员和长期 Windows 用户,痴迷于让我的系统尽可能方便使用。

昨天,我想到了 Windows 中一直让我烦恼并且我认为理所当然的事情,我意识到我对它如何工作有更好的想法,我现在想知道是否有可能调整 Windows 以使其工作像那样。

让我恼火的是当窗口抢走焦点时。例如,我可能正在运行某个程序的安装程序。当它工作时,我会切换到浏览器并浏览,也许会在浏览器中的电子邮件中输入一些文本。然后安装程序突然完成它的窗户抢走了焦点。现在我正在写一封电子邮件,所以我可能会按下一个恰好绑定到该安装程序上的按钮的键,然后该按钮被调用,执行一些我从未打算发生的操作!

这对我来说非常烦人,因为我正在使用一个名为 DexPot 的多桌面程序,当一个窗口窃取焦点时,它也会将自己带到我当前所在的桌面,这真的很烦人,因为然后我必须将其放回原来的桌面。

我对这个问题的理想解决方案是如何工作的:每当一个窗口试图窃取焦点时,我们都会拦截它,并且不让它发生。我们显示类似烤面包机的消息,内容是“Foobar 安装程序想要焦点,按 Win-Whatever 切换到它”。如果按下组合键,它会切换到窗口。

问题是:有没有一种简单的方法来调整 Windows 来实现这一点?我对Windows编程知之甚少。我确实了解 AHK,如果可以的话那就太好了。


不,没有简单的方法来添加此行为,但 Windows 会尝试自动执行此操作。

理论上,当您正在积极使用另一个应用程序时,应用程序不应该能够窃取前台。不幸的是,在某些情况下,Windows 无法区分应该更改前台的合法用户操作和不必要的前台盗窃。窗口管理器通常会在每个新版本的 Windows 中弥补漏洞,但也需要确保应用程序可以在用户希望时进入前台,即使这种愿望是间接表达的。

例如,当前前台进程启动的进程可以将窗口置于前台。这是必要的,以便当用户从资源管理器启动窗口时,新启动的进程可以打开其主窗口。此权限仅持续到下一次用户输入为止,因此,如果应用程序启动缓慢并且您开始处理电子邮件,则应用程序可能会在使用它们之前失去其前台权限。

See the 设置前景窗口函数有关能够将窗口设置到前台的进程的要求列表的文档。

还有一些应用程序专门利用这些要求来窃取权限(通过加入前台队列或合成用户输入),但我怀疑在您的安装程序场景中这是偶然的。

我不确定到底发生了什么,但我怀疑问题来自于作为服务运行的安装程序,并在尝试在当前桌面上启动应用程序时意外窃取了前台权限。

理论上,外部进程可以挂接到前台系统来覆盖它并显示您的确认 toast,但是要正确执行会很棘手,并且需要大量的低级代码(我可能会从CbtHook)。这在像 AHK 这样的脚本包中是不可能的(假设您指的是 AutoHotKey),但需要将本机 C/C++ 代码注入到每个正在运行的进程中。

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

拦截窗口窃取 Windows 全局焦点的尝试 的相关文章

随机推荐

  • 如何按键值对具有 stdClass 对象的多维数组进行排序? [复制]

    这个问题在这里已经有答案了 是的 我已经搜索并尝试了很多技术 但似乎没有任何效果 这是我的数组 Array 0 gt stdClass Object id gt 119 name gt Business3 start date gt 133
  • 第一个句号之后的参数的自动完成/下拉框

    例如 如果我在 Excel 托管的 VBA 中编写参数 ActiveSheet UsedRange Select Halfway through writing the first part ActiveSheet CTRL SPACE w
  • 打字稿中的管道(|)是什么意思?

    在浏览一些打字稿代码时 ng bootstrap我找到了管道 操作员 export declare const NGB PRECOMPILE typeof NgbAlert typeof NgbTooltipWindow 管道有什么用 打字
  • iOS6 中的 AudioToolBox 泄露?

    当我使用 AudioToolBox 播放音乐时 内存泄漏严重 AVAudioPlayer newMusicPlayer AVAudioPlayer alloc initWithData data error error 我用这个代码来播放音
  • 读取文本文件并在 MSBuild 中分割每一行

    我在 MSBuild 中遇到了以下问题 我有一个文本文件 buildsolutions1 txt 其中包含列表 逐行 其中包含我需要构建的所有解决方案以及以逗号分隔的相关开发人员电子邮件 常见 Common sln am email com
  • VS 代码自动更正

    我正在寻找一种方法来自动替换 VS Code 中经常拼写错误的单词 有没有什么东西 我将如何创建一些东西 我可以添加要查找的特定字符串 要替换的字符串以及要激活的自动更正的语法 文件类型 Example 背景 背景 CSS SCSS 更少
  • 购物车错误(LaravelShoppingcart)

    我在用Crinsane LaravelShoppingcart使用 Laravel 5 当我尝试将商品添加到购物车时 它将显示错误 非静态方法 Gloudemans Shoppingcart Cart add 不应静态调用 假设 this
  • 仅在 chrome 上使用 corsheaders 的 Missing Patch 方法

    我有一个正在使用的 Django 应用程序corsheaders包及其在 settings py 中如下所示 INSTALLED APPS corsheaders MIDDLEWARE on top corsheaders middlewa
  • 将 csv 文件的一些列复制到表中

    我有一个包含 10 列的 CSV 文件 创建包含 4 列的 PostgreSQL 表后 我想将 10 列中的一些复制到表中 我的 CSV 表的列如下 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 我的 PostgreSQL
  • “抛出新的 NotImplementedException();”是什么意思究竟做什么?

    我有一个继承自类 a 的类 b 在类 a 中 有一些代码在事件不为空时执行操作 我需要在应用程序的特定时间在 b 类中触发该代码 所以在 b 中我订阅了一个新的处理程序 事件 如果我将自动生成的事件 按原样 保留在 b 类中throw ne
  • 从 next.js 中的中间件重定向 13 AppDir: true

    当我没有得到 jwt 后端时 我试图进行重定向 我在 next js 13 中appdir active 中间件 ts import NextResponse from next server import type NextRequest
  • React 项目在 Heroku 上崩溃并出现许多分配失败,但在本地开发上运行

    我的 React 日历应用程序在本地开发构建上运行良好 但在部署到 Heroku 时会出现许多分配失败 以下是 Heroku 日志中的错误 2021 08 29T06 50 16 143215 00 00 app web 1 lt Last
  • 使用 NEVPNManager 创建个人 VPN 连接

    我正在尝试在我的应用程序中创建 VPN 连接 我通过这个链接https developer apple com documentation networkextension nevpnmanager但没有找到任何使用NEVPNManager
  • html css 等于 div 高度

    我有一个容器 div 其中并排包含 2 个动态高度 高度尚未设置 div 这 2 个 div 是内容 div 有时一个 div 的内容比另一个 div 的内容多 导致与另一个 div 的距离更长 而那些两个 div 具有不同的颜色 为了具有
  • Python 中的 HTML 文件解析

    我有一个很长的 html 文件 看起来完全像这样 html文件 我希望能够解析该文件 以便获得 tuple 表单中的信息 Example tr td Cech td td Chelsea td td 30 td td 6 4 td tr 上
  • 计算字符串中子字符串出现的次数

    如何计算 Python 字符串中给定子字符串出现的次数 例如 gt gt gt foo bar foo numberOfOccurrences foo 2 To get indices of the substrings see How t
  • 如何在 R 中求 5 分钟间隔的总和

    我有一个数据集 其中包含 6 个不同站点每分钟的降水量记录 我想对每个电台每 5 分钟进行一次汇总 这些是我的数据集的前 5 行 总共 17280 行 P alex P hvh P merlijn P pascal P thurlede P
  • Python加载带有UTF-8 BOM头的json文件

    我需要解析其他工具生成的文件 该工具无条件输出带有 UTF 8 BOM 标头 EFBBBF 的 json 文件 我很快发现这就是问题所在 因为 Python 2 7 模块似乎无法解析它 gt gt gt import json gt gt
  • 绘制 Windrose:制作浓度设置为颜色的污染玫瑰

    尝试绘制风玫瑰图 其中绘制了速度和方向 浓度决定了颜色 不幸的是 matplotlib 仅支持两个变量 可以制作一个很好的散点图来显示我想要的内容 但不确定如何将其分类 以便它像所附图像一样 Halliday et al 2016 应转换为
  • 拦截窗口窃取 Windows 全局焦点的尝试

    我是一名开发人员和长期 Windows 用户 痴迷于让我的系统尽可能方便使用 昨天 我想到了 Windows 中一直让我烦恼并且我认为理所当然的事情 我意识到我对它如何工作有更好的想法 我现在想知道是否有可能调整 Windows 以使其工作