问题标签 [shutdown]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - 您如何干净地中止 Delphi 程序?
我有一个程序在关机期间遇到了一些问题,引发了我无法追溯到其来源的异常。它似乎与时间相关且不确定。这是在所有共享资源被释放之后发生的,并且由于它已关闭,内存泄漏不是问题,所以这让我想知道是否有任何方法可以告诉程序在释放共享资源后立即静默终止,而不是继续关闭序列并给出异常消息框。
有谁知道这是怎么做到的吗?
windows - 发送/捕获 SIGTERM 的 Win32 API 模拟
在 POSIX OS 下,有信号 API 允许向进程发送信号以使用 kill 将其关闭,您可以使用 sigaction 捕获它并执行您需要的操作;
但是,Win32 不是 POSIX 系统,所以:
- 如何处理可能出现的关闭事件,例如来自“任务管理器”中的“结束进程”?
- 向 Win32 应用程序发送关机信号的标准 API 是什么?
我不是在谈论 GUI,我在谈论应该很好地关闭的 TCP/IP 服务器。它不像 Windows 服务那样运行。
delphi - Delphi 程序阻止 Windows 正常关闭
我有一个小程序,它简单地读取日记文本文件并将其显示在备忘录中 - 就是这样 - 如果你想让它消失,你可以双击表单来关闭它。当它运行时(即使你关闭它),Windows XP 会达到“Windows 正在关闭”,即。在“保存用户设置”等之后,它就会挂起。我检查了看起来与我编写的其他程序没有什么不同的代码,这些程序更复杂但看不出任何错误——例如,关闭例程包含 application.terminate (我认为)无论如何都应该从内存中清除任何错误。任何想法,因为我似乎已经用完了它们?
c# - 向 Windows 服务发送 Windows 消息
是否有任何工具可以向 Windows 服务发送(模拟)像“WM_ENDSESSION”这样的 Windows 消息?
或者
如何使用 C# 向进程发送 Windows 消息?
(我只知道 C#)
编辑:目的:基本上我必须调试一个 Windows 服务来修复仅在系统关闭时发生的错误。
c# - .NET 窗体打开时,Visual Basic 6.0 应用程序不会关闭。相反,它显示消息“无法退出”
我有一个Visual Basic 6.0应用程序,它使用了几个用.NET编写的组件。当 Windows 关闭时,应用程序必须正常关闭。问题是,如果代码的 .NET 部分显示一个窗口,应用程序会显示消息“无法退出”并且无法退出。(然后由操作系统终止。)
我设法在一个简化的应用程序中重现了这一点。
.NET 代码创建一个WPF窗口并使用 ShowDialog() 显示它:
正如您所看到的 .NET 调用阻塞(并且位于 GUI 线程上),我怀疑这可能是问题的根源,但我不能让所有调用都成为非阻塞的。我会假设当操作系统关闭时,所有打开的应用程序窗口都会被终止。
Visual Basic 6.0 应用程序通过单击按钮加载和显示 .NET 表单。
如果在屏幕上显示 .NET 表单时尝试关闭 PC,则会失败。“无法退出”消息框如下所示。
要重新创建它,您必须将程序集标记为COM可见(在文件中assemblyinfo.cs
):
并且您必须将 Project->Properties>Build 选项卡设置为“Register for COM interop”
我还注册了编译的程序集:
我该如何解决这个问题?
wmi - 没有 (!) RPC 服务的远程关闭
有多种方法可以远程关闭计算机。
以下是我知道的三个:
- 通过远程 WMI 连接调用 Win32_OperatingSystem 类的 Shutdown 方法
- 使用 Microsoft Windows shutdown.exe
- 让您的 (whatever).exe 将自身复制到目标计算机上的系统文件夹,将自身注册为服务并使用参数远程启动它,以便它启动本地关闭。
第 3点是 sysinternals 这样做的原因,例如,它要求您激活文件和打印机共享,以便它能够将自身复制到目标并调用服务。
2 号几乎可以在任何地方使用……但还需要启用文件和打印机共享。因为:这会激活远程调用关闭所需的 RPC 服务。
据我所知,即使是1 号WMI 解决方案,不仅需要在目标上安装 WMI,还需要启用 RPC 服务。
我的问题是:我需要一个解决方案,允许我在没有启用RPC的情况下关闭远程计算机。
有办法吗?
注意:业务解决方案上下文中的一种方式;-)
c# - 在 C# 中获取 Windows Server 关闭原因
用户在对话框窗口中选择原因后,是否可以立即在 Windows Server 2008 中获取关机原因?对于关闭事件,我使用 SystemEvents.SessionEnding。我想编写 Windows 服务,它将发送有关此事件的电子邮件。
或者在 Windows 服务器中是否有任何其他方式可以通过获取用户输入的原因来发送有关关机/重启事件的电子邮件?另外,我想通知电源变化(电线/电池),但我已经通过 Kernel32.dll > GetSystemPowerStatus 解决了这个问题。
c - 在 Mac OSX 上接收电源通知(尤其是关机)
我正在为 Mac (Leopard) 编写一个 C 应用程序,它需要在接收电源通知时做一些工作,例如睡眠、唤醒、关机、重启。它launchd
在登录时作为启动代理运行,然后开始监视通知。我用来执行此操作的代码如下:
然而,只有前两个 sleep 和 wake ( kIOMessageSystemWillSleep
and kIOMessageSystemHasPoweredOn
)会被调用。我从来没有收到任何重启或关机的通知(kIOMessageSystemWillRestart
和kIOMessageSystemWillPowerOff
)。
难道我做错了什么?或者是否有另一个 API 可以给我重启和关闭通知?我更愿意将其保留为 C 程序(这就是我所熟悉的),但我愿意接受任何明智的替代建议(我已经查看了登录/注销挂钩,但这些似乎已被弃用)的发射d)。
提前感谢您的任何帮助/提示!
service - 如何防止系统在 Win32 服务中关闭或重新启动?
我想防止用户关闭或重新启动系统。我的应用程序作为 Win32 本机服务(由 C++ 编写)在 LocalSystem 帐户下运行。
我听说了WM_QUERYENDSESSION
它的解决方案:创建一个隐藏窗口并捕获WM_QUERYENDSESSION
以防止关闭。
但是这个解决方案不是很干净,还必须为每个桌面创建一个窗口。所以我必须枚举桌面并关心桌面何时创建/销毁。所有这些都让情况变得糟糕!
有什么方法可以检测关机/重启事件并防止系统关机/重启?
(事件是关闭还是重启并不重要,两者都必须取消!)
java - 在 java 关闭钩子线程中确定退出状态
我想在关闭挂钩运行时确定进程的退出状态。
我想要一个基于状态码(0或非零)的逻辑
(例如:如果零不做任何其他非零发送警报电子邮件)
你知道我怎样才能得到这些信息吗?