如何暂停 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 关闭 的相关文章

  • delphi分组框标题颜色变化

    我正在使用 BDS 2006 想知道您是否可以使用项目中存在的 XPmanifest 更改组框和单选按钮组标题的颜色 因为它始终是蓝色 唯一的方法是重写 Paint 方法TGroupBox http docwiki embarcadero
  • FreeMM 与 ShareMem

    我们有很多用 delphi 和 c builder 编写的 dll 库 并使用 sharemem 和 borlndmm dll 3d party 库中的对齐问题迫使我们转向 delphi 2007 中的新内存管理器 有人可以帮我解释一下 共
  • Winform 没有.NET 框架?

    我必须创建一些表单并将其作为直接 EXE 提供 而不是安装程序 它安装 NET 框架 最终用户对此不满意 他们想要可以直接打开和工作的东西 我知道它可以作为网络完成 但我正在寻找 winforms 吗 请建议哪种工具 技术可以处理这个问题
  • 为应用程序启用主题

    我有一个旧的应用程序 在Win XP中的delphi 7中启动 现在我正在使用delphi 2009 win Vista 如果我开始一个新项目 所有按钮都有一个圆形边缘 但在我的旧应用程序中 所有按钮都有 方形 形状的外观 有什么设置我错过
  • 使用 StretchDIBits 使用 Delphi 6 处理条形码图像 - 输出中缺少条形线

    我的应用程序是在 Delphi 6 中开发的 由于后台处理和大量数据 它消耗大约 60MB 120MB 物理内存 这是一个资源密集型应用程序 该应用程序的功能之一是在进行某些处理后创建条形码图像 如果用户继续生成条形码 那么至少十分之一的条
  • Delphi - 将物理路径(设备文件句柄)转换为虚拟路径

    我怎样才能转换像这样的路径 设备 HarddiskVolume3 Windows 进入其相应的虚拟路径 如本例中的 c Windows 我个人更喜欢原生方式 function GetHDDDevicesWithDOSPath TString
  • Delphi DataSnap REST 服务器从 TStream 返回 JSON 数组,而不是二进制

    我有一个与 Android 客户端通信的 REST 服务器 我将它从 XE3 ish 升级到 Berlin 其中一个服务器方法返回一个包含 jpeg 的 TStream 并且工作得很好 很高兴将图像作为二进制图像返回 升级到 Berlin
  • 从delphi应用程序调用.net4.0 com服务器后出现错误异常

    我们正在将代码库从 BDS2006 迁移到 Rad Studio XE 我们发现了一些非常奇怪的行为 如果我们在从 Net4 0 中实现的 COM 服务器创建一些对象后进行无效的浮点运算 即除以零 我们不会没有得到正常异常 即 EDivis
  • Delphi XE5 REST/Android 客户端“会话已过期”

    我有一个REST Server与Android Client 都在Deplhi Xe5 Android客户端成功连接Rest服务器 在我的服务器中我有一个TDSHttpWebDispatcher with SessionTimeout 12
  • 如何追踪“地址 00000000”的访问违规

    我知道如何创建 map 文件来在错误消息包含实际地址时跟踪访问冲突错误 但是如果错误消息说怎么办 Access violation at address 00000000 Read of address 00000000 我从哪里开始寻找这
  • 如何向标准集合编辑器添加图标?

    我有一个自定义控件 它利用TCollection and TCollectionItem 在集合编辑器中 我想向每个列表项添加图标 该列表项由内部TImageList 在其父组件内 集合项本身代表图标 我想在这个编辑器中显示相应的图标 如何
  • Delphi - 如何获取 USB 可移动硬盘和记忆棒的列表?

    在我的应用程序 Delphi 中 我需要列出所有 USB 存储设备 这些可以是闪存棒or外部存储驱动器 有一个Jvcl成分JvDriveCombo 并且它有DriveType属性 问题是我是否选择DriveType Fixed那么除了外部驱
  • 查找Delphi项目中的所有编译错误

    我正在对我的 Delphi 项目进行一些重构 我希望能够做出改变 然后看看all项目中因该更改而中断的地方 类似于 Eclipse 列出项目的所有编译错误 在 Java 中 在 Delphi 中 我可以进行更改 然后重新编译我的项目 但编译
  • 如何用不同的颜色绘制选定的列表框项目?

    是否可以更改 TListBox 中的项目选择焦点颜色和文本颜色 当项目中未启用主题或列表框样式设置为所有者绘制时 项目周围的选择将被涂成蓝色 我相信这是由系统的外观设置全局定义的 我想将所选项目的颜色更改为自定义颜色 举个例子 结果会是这样
  • 如何在Delphi中显示Vista风格的气球提示?

    在输入验证时 我使用气球提示而不是消息框 我的问题是 在 Vista 上 它们具有带圆角的旧 XP 样式 而不是较新的矩形外观 我尝试使用 CreateWindowEx 创建它们并且tooltips class32或使用 SendMessa
  • Delphi中使用FindVCLWindow调用WinHelp32(WinXP Pro SP3 32bit)

    有什么问题吗 procedure TForm1 VCLHelpClick Sender TObject var Ctrl TWinControl begin Ctrl FindVCLWindow Mouse CursorPos if Ctr
  • 从 Delphi VCL 样式获取特定字形

    我想从 VCL 样式获取特定的位图 并将其设置为按钮上的图像 它实际上是帮助问号 在位图样式编辑器中是来自表单的 btnHelp 图像 要从 VCL 样式获取视觉元素 字形 您必须使用GetElementDetails和TCustomSty
  • 将图像加载到 TImageList 并读取它们?

    我试图通过将 jpg 转换为 bmp 然后将其保存到 imagelist1 来将 jpg 加载到图像列表中 从上到下的代码片段 Selectdir 有效 fileexists 部分有效 这用于加载文件夹中的所有图像 所有图像都以 0 jpg
  • 阻止 IDE 自动添加使用单位

    我正在将 Lazarus 项目转移到德尔福西雅图 Lazarus 项目依赖于 40 多个单元 包括控件 并具有多种应用程序 在所有项目的使用条款中 他们使用了以下内容 uses Classes SysUtils Forms Controls
  • H2161 重复资源[一个VCL项目可以有2个类名相同但命名空间不同的表单吗?]

    我尝试在 2 个不同的命名空间中创建具有相同类名的 2 个表单 FirstNameSpace ExampleFormName TExampleFormName SecondNameSpace ExampleFormName TExample

随机推荐

  • 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 来暂停应用