如何暂停 Windows 关闭

2023-12-01

我需要在启动和关闭时将声卡静音/取消静音。

我找到了一些代码来完成这项工作,但 Windows 通常会突然关闭,并且声音永远不会静音。

有人可以告诉我如何暂停关闭足够长的时间以使我的应用程序静音吗?我可以使用一个简单的 TTimer 来暂停应用程序足够长的时间,以使其运行静音,然后让 Windows 继续关闭。

我如何让 Windows 等待?

我注意到,如果我让 Firefox 保持运行并尝试关闭,Windows 会停止并显示一条消息:“这些程序正在阻止窗口关闭...”,并且需要单击才能强制 Firefox 关闭。我需要找到那个。


从 Windows Vista 开始,如果您向操作系统注册关闭原因字符串或者您的应用程序具有顶级窗口,则操作系统将无限期地等待您的程序从WM_QUERYENDSESSION在显示阻止应用程序屏幕时 - 或者直到用户选择强制结束程序。

下面的示例代码模拟了 45 秒的等待Sleep。在等待的前五秒内,操作系统会耐心等待,然后才会显示全屏 UI。立即显示屏幕的唯一方法是立即返回 falseWM_QUERYENDSESSION。但在这种情况下,您将无法恢复关闭。

有关 Vista 及更高版本操作系统关闭行为的详细信息,请参阅文档.

type
  TForm1 = class(TForm)
    ..
  protected
    procedure WMQueryEndSession(var Message: TWMQueryEndSession);
      message WM_QUERYENDSESSION;
    ..

...

function ShutdownBlockReasonCreate(hWnd: HWND; Reason: LPCWSTR): Bool;
    stdcall; external user32;
function ShutdownBlockReasonDestroy(hWnd: HWND): Bool; stdcall; external user32;


procedure TForm1.WMQueryEndSession(var Message: TWMQueryEndSession);
const
  ENDSESSION_CRITICAL = $40000000;
begin
  Message.Result := LRESULT(True);
  if ((Message.Unused and ENDSESSION_CRITICAL) = 0) then begin
    ShutdownBlockReasonCreate(Handle, 'please wait while muting...');

    Sleep(45000); // do your work here

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

如何暂停 Windows 关闭 的相关文章

  • 如何从具有管理员权限的应用程序接收键盘输入到非管理员应用程序?

    我编写了一个应用程序 该应用程序具有覆盖类型的窗口 可以通过热键显示和隐藏该窗口 而另一个应用程序具有焦点 所述另一个应用程序是一个以管理员权限运行的 DirectX 游戏 我已经尝试了 3 种可能的解决方案 以便在其他应用程序中按下我的热
  • 我可以在“Delphi 2007 for Win32”中使用.NET DLL吗?

    是否可以在 Delphi 2007 for Win32 中使用 NET DLL 我尝试以与 ActiveX 组件相同的方式导入 DLL 但它似乎不起作用 组件菜单 gt 导入组件 gt 导入 NET 程序集 是否可能 如果可以 步骤是什么
  • VCL.位图到 FMX.位图

    我在网上找到了这段代码 但 FMX Bitmap 没有扫描线 是否可以以某种方式将 VCL TBitmap 复制或绘制到 FMX Bitmap IFDEF MSWINDOWS type TBitmap FMX Types TBitmap T
  • Delphi TImageList 位图更改

    我正在使用 Delphi XE2 Update 3 Update 4 与我们的一些第 3 方组件不兼容 因此我们尚未更新 我在我的应用程序中使用 TImageList 我注意到很多时候当它从源视图切换到表单视图 F12 时 突然之前未修改的
  • delphi 变量值在循环中的线程中发生变化

    我的代码正在运行一个 for 循环来处理一些数据 如下所示 procedure printValue Value Integer begin TThread Synchronize TThread Current procedure beg
  • 如何在滚动框上创建缓慢的滚动效果?

    我喜欢在滚动框中平移图像后创建平滑的减慢滚动效果 就像平移地图一样谷歌地图 http maps google com 我不确定它是什么类型 但行为完全相同 当快速移动地图时 当您释放鼠标时它不会立即停止 而是开始减慢速度 有什么想法 组件
  • Firemonkey 编辑/组合自动完成/打字时自动建议

    实施方式是什么Autocomplete or Autosuggest适用于 Windows Android 平台以及 MacOS 和 iOS 的 Delphi Firemonkey Example 当用户在 Google 搜索框中输入文本时
  • 我可以让我的 Delphi 应用程序在特定时间(例如上午 12:00)启动,而不运行应用程序吗?

    我看到一个已安装的应用程序 它从供应商的网站提供一些 XML 数据并将其显示在主窗体窗口中 我想这很简单 但我注意到 即使我关闭系统托盘中的应用程序 明天早上 上午 12 00 正好 它也会再次弹出 这太酷了 我不确定它是用 Delphi
  • Delphi - 自XE8以来如何正确注册图形类?

    我正在编写一个 Delphi 包 它提供了一个新的自定义 TGraphic 对象 允许读取 VCL 组件 如 TImage 中的新图像格式 我最初使用 RAD Studio XE7 开发了这个包 并且运行良好 然而 我最近迁移到了较新的 R
  • 处理 TShellListView 后代中的文件放置

    我正在尝试创建 TShellListView 的后代 它接受从 Windows 资源管理器中删除的文件 我想在组件定义中处理拖 放操作 而不必在任何使用该组件的应用程序中实现它 我找到了接受从 Windows 资源管理器中拖放的文件的示例
  • 如何在调试器中显示 TStringList 的内容?

    我想在调试应用程序时显示 TStringList 的全部内容 相反 我只是得到指示 Flist 仅显示地址 如果您使用的是 Delphi 2010 或更高版本 调试器允许使用调试可视化工具 http docwiki embarcadero
  • Word 2010 自动化:“转到书签”

    我有一个用 Delphi 7 编写的程序 它打开一个基于模板的新 Word 文档 文档打开后 系统会自动跳转到书签 在模板中预定义 并在其中添加一些文本 以下代码在 Word 2003 中工作正常 但会导致invalid variant o
  • 为什么未初始化的指针会导致内存访问冲突接近 0?

    据说often 但并非总是如此 当你在接近于零的内存位置 比如 89 美元 获得 AV 时 你就有了一个未初始化的指针 但我也在 Delphi 书籍中看到了这一点 嗯 或者它们都是由同一作者写的 Update 引自 Bob Swart 等人
  • 石和磅的格式正确吗?

    我有一个图表 用于显示重量 以英石和磅 lbs 为单位 该图表由记录中的数据填充 对于权重 数据类型为 Double 记录数据是在运行时编辑的 我需要知道一种正确格式化输入数据的方法 为了更好地理解 首先看一下这些示例值 它们表示为石和磅
  • TObjectList.Contains 导致 Delphi 2009 中的访问冲突

    在 Delphi 2009 中 到目前为止 我在泛型方面没有遇到大问题 使用 Generics Collections 列表 没有特殊的泛型功能 现在我发现这段代码会在访问的行中导致AVMyList Contains 如果我声明 TMyLi
  • 如何在运行时(Delphi/Windows)程序中添加代码?

    我正在Windows XP Delphi 7上工作 我需要在正在运行的程序中添加一些过程 或函数 并且我不想在完成后再次重新编译它 我只有一个具有 5 个功能的主机应用程序来发送不同类型的警报 但是还有其他新的警报类型 所以我必须执行新的功
  • 如何调试仅在应用程序关闭时发生的崩溃? (德尔福)

    因此 经过最近的一些更改 我们发现我们最古老的应用程序之一有时会在关闭时崩溃 这会以 运行时错误 216 消息的形式或来自 Windows 错误报告的消息的形式表明应用程序已停止工作 该应用程序已经发出OutputDebugString 每
  • 在 Delphi 中的 SOAP 标头中发送简单字符串

    我需要发送这样的东西
  • 任意通用列表的通配符

    我有一个类 MyClass 它不是通用的 包含任意 TList 并对其执行某些操作 我希望用通用 TList 替换 TList 但 MyClass 必须保持非通用 由于 Delphi 是不变的 这样的事情是行不通的 list1 TList
  • delphi THashSHA2 在大文件上返回错误的 SHA256

    Data Cloud CloudAPI pas has class function TCloudSHA256Authentication GetStreamToHashSHA256Hex const Content TStream str

随机推荐

  • jsp中如何实现分页

    我需要分页概念来显示 15 条记录 这是我的jsp文件
  • 如何在 Volley 中获取 JSONObject 服务器响应

    protected JSONObject executeGet String URL throws CloudAppException JSONObject response new JSONObject JsonObjectRequest
  • 将带有标题的 HTML 表转换为 Json - Python

    假设我有以下 HTML 表 table tr th Name th th Age th th License th th Amount th tr tr td John td td 28 td td Y td td 12 30 td tr
  • pandoc lua 过滤器替换 tex 宏

    我正在尝试编写一个 pandoc lua 过滤器来替换乳胶包 mhchem 中的 ce 命令 这是我尝试的示例 ce NO3 但它不起作用并在 rtf 输出文件中呈现空白 return Str function elem if elem t
  • 如何以 root 身份运行 Perl 脚本但仍然影响用户 gconf 设置

    新问题 我正在尝试制作一个统一的脚本 根据我的喜好初始化新的 Ubuntu 安装 它必须在 sudo 下运行才能安装软件包 但使用 gconftool 2 影响 gconf 设置依赖于未处理的 dbus 会话通过简单地在脚本中更改 UID
  • 使用 Botframework 进行 OAuth 时的神奇代码。有办法吗?

    登录机器人时 使用 Botframework OAuthPrompt 功能 用户需要登录 Microsoft 页面 然后要求复制魔术代码并将其粘贴到与机器人的对话中 有没有一种方法可以自动传递它而无需用户输入 文档说它应该在 v4 中解决
  • Ajax.ActionLink 替代方案 - Net Core

    早些时候在MVC I used Ajax ActionLink用于 Ajax 调用并替换了布局中的容器 Now in Net核心有类似的东西Ajax助手那时 我怎样才能形成Ajax打电话不写jquery我的仪表板中每个菜单项的脚本 I tr
  • 类访问私有方法的最佳方式(私有名称修改)

    如果我有这个 class Test def init self x self x x def A self doA def doA print A if name main t Test 1 t A 显然这会导致NameError glob
  • 如何创建具有多行代码的宏?

    我想制作一个宏来注入一些代码 例如 if foo Bar fooBar 然后 只要我需要 我就会将 FOOBAR 放入代码中 不确定 但在编译时 编译器会将其替换为实际代码 如上例所示 也许我可以使用与宏不同的东西 使用 转义您想要成为宏一
  • 使用反向引用的多行 sed

    我正在使用命令行脚本转换补丁脚本 在这些脚本中 有两行组合 例如 dev null filename txt 需要转换为 filename txt filename txt 最初我尝试过 less file diff sed e s dev
  • 如何正确处理带有 MessageBox 确认的 PreviewMouseDown 事件?

    早些时候我问过如何取消 WPF TreeViewItem Selected 事件 回答者建议我在选择发生之前处理 PreviewMouseDown 事件 这就说得通了 我已经尝试这样做了 XAML
  • Codeigniter从视图到控制器获取ajax值

    如何得到send在我的控制器中 这是我尝试过的 Ajax ajax type POST url example name data send success function value 控制器 class Example extends
  • pygame 不适用于便携式 python

    我试图让 pygame 使用可移植的 python 3 2 1 1 在 USB 记忆棒上运行 但是当我使用以下代码时 import pygame sys It says ImportError No module named pygame
  • 将 PDF 渲染为图像并提取超链接

    我使用 imagemagick 将 PDF 由 pdfLaTex 生成 渲染为图像 convert density 120 test pdf trim test png 然后我在 HTML 文件中使用该图像 以便在自己的 wiki 引擎中包
  • 为什么我的 ML 函数推断的类型与我预期的不同?

    我做了一个函数 它的名字是maptree 下面是我的代码 datatype a tree LEAF of a NODE of a tree a tree fun maptree f NODE X Y NODE maptree f X map
  • Linux 中有标准的退出状态代码吗?

    在 Linux 中 如果进程的退出状态为 0 则认为该进程已正确完成 我发现分段错误通常会导致退出状态为 11 尽管我不知道这只是我工作的约定 像这样失败的应用程序都是内部的 还是标准 Linux 中的进程有标准退出代码吗 第 1 部分 高
  • ASP.Net / MySQL:将内容翻译成多种语言

    我有一个 ASP Net 网站 它使用 MySQL 数据库作为后端 该网站是一个英语电子商务系统 我们正在考虑将其翻译成大约五种其他语言 法语 西班牙语等 的可能性 我们将让人工翻译人员来执行翻译 我们已经研究过自动化服务 但这些还不够好
  • Azure 使用文件共享从 IIS VM 共享照片?

    如何创建可在 VM 中运行的 Web 服务器之间共享的文件共享 以直接访问 Azure 中的 Blob 存储 我正在将用 net 1 1 编写的现有 n 层网站应用程序迁移到 Azure 虚拟机 这是一个遗留应用程序 我想将其以当前形式移动
  • MPMoviePlayerController 处于纵向模式?

    我想知道是否可以在纵向模式下使用 MoviePlayer 感谢您的帮助 T 如果你使用 moviePlayer setOrientation UIDeviceOrientationPortrait animated NO API 您的应用程
  • 如何暂停 Windows 关闭

    我需要在启动和关闭时将声卡静音 取消静音 我找到了一些代码来完成这项工作 但 Windows 通常会突然关闭 并且声音永远不会静音 有人可以告诉我如何暂停关闭足够长的时间以使我的应用程序静音吗 我可以使用一个简单的 TTimer 来暂停应用