是否有任何工具可以向Windows服务发送(模仿)像'WM_ENDSESSION'这样的Windows消息?
要么
如何使用C#向进程发送Windows消息?
(我只知道C#)
编辑:目的:基本上我必须调试Windows服务来修复仅在系统关闭时发生的错误.
首先介绍一下:我有一个WPF应用程序,它是传统Win32应用程序的GUI前端.遗留应用程序在单独的线程中作为DLL运行.用户在UI中选择的命令在该"遗留线程"上调用.
如果"遗留线程"结束,GUI前端不能再做任何有用的事情了,所以我需要关闭WPF应用程序.因此,在线程的方法结束时,我打电话Application.Current.Shutdown().
由于我不在主线程上,我需要调用此命令.但是,我注意到Dispatcher也必须BeginInvokeShutdown()关闭调度程序.所以我的问题是:调用之间有什么区别
Application.Current.Shutdown();
Run Code Online (Sandbox Code Playgroud)
并打电话
Application.Current.Dispatcher.BeginInvokeShutdown();
Run Code Online (Sandbox Code Playgroud) 是否有一种标准方法可以"干净地"关闭应用程序,而某些WaitHandle对象可能处于当前阻塞调用的状态WaitOne?
例如,可能有一个后台线程在这样的方法中旋转:
while (_request.WaitOne())
{
try
{
_workItem.Invoke();
}
finally
{
OnWorkCompleted();
}
}
Run Code Online (Sandbox Code Playgroud)
我没有看到没有明显的方法来处理这个线程而没有调用Thread.Abort(根据我的理解,这是不鼓励的).调用Close了对_request对象(AutoResetEvent),但是,会抛出异常.
目前,运行此循环的线程已将其IsBackground属性设置为true,因此应用程序似乎正常关闭.但是,自从WaitHandle实现以来IDisposable,我不确定这是否被认为是犹太洁食,或者是否应该在应用程序退出之前处理该对象.
这是一个糟糕的设计吗?如果没有,通常如何处理这种情况?
我有一个Windows 7机器,其中包含多个启动时启动的VMWare Player机器.我使用WMWare VIX和批处理文件关闭虚拟机,如下所示:
"C:\path\to\VMWare VIX\vmrun.exe" -T player stop "C:\path\to\machine.vmx" soft
Run Code Online (Sandbox Code Playgroud)
我想要完成的是在主机关闭时运行这些命令,这样我就不需要单独关闭每个VM.部署后,可能只需短按ACPI电源按钮即可开始关机,而不是从"开始"菜单开始.我试过的方法不起作用(至少不够好):
组策略 - 最明显的方法,但在Windows 7中,"异步"运行关闭脚本的选项已经消失.
结果是,Windows 首先告诉所有打开的窗口关闭,虚拟机响应它们正在使用,并且您将获得"强制关闭"对话框.只有在 VMWare Player和其他所有内容都关闭后,脚本才会运行,没有用.
你认为这可能会改变,但我想我记得看到一些正式的MS注意到"不,抱歉".但是找不到链接.
使用一个批处理文件关闭所有虚拟机,然后将主机关闭为桌面快捷方式,而不是通常的关机按钮. - 工作,这就是我在开发过程中正在使用的东西.
但是使用ACPI电源按钮启动正常关机,结果与之前相同,如果每天打开和关闭机器的最终用户不需要使用显示器和鼠标,那就更好了.
所以我现在正在谷歌搜索是一种修改按下物理电源按钮时调用的操作的方法.Windows允许您在一些不同的操作(如睡眠,休眠,重启等)之间进行选择,但是您可以将其更改为"运行此.bat"吗?或者可能完全改变shutdown命令的行为?
以编程方式拦截关闭消息,中止关闭,运行批处理文件,重新启动关闭.关于拦截关闭的讨论已经有了一些讨论,例如这里,这里和这里,但是我仍然在所有语言中都使用了n00b,除了Ruby或Java之外,我真的可以理解在这种情况下是否以及如何完成它.如果有人可以澄清如何实际完成这项工作(不会卡在"强制关闭"屏幕上),那么我很想尝试你提供的任何语言.
我在R中运行了一个需要花费很多时间的脚本.我觉得我的电脑在完成脚本后会自动关机.那可能吗?我怎么能用R做到这一点?我为此搜索了包和函数,但我找不到.谢谢PS我的PC运行Windows 8.1
我在Mac Yosemite上使用JBoss wildfly 10.0.0.CR2.我正在寻找一种简单的杀死JBoss的方法,并建议这个命令
pgrep -d" " -f "wildfly" | xargs kill;
Run Code Online (Sandbox Code Playgroud)
所以我运行这个命令,然后进入我的$ JBOSS_HOME/bin目录并运行"sh standalone.sh"并获得令人失望的输出......
Daves-MacBook-Pro-2:bin davea$ sh standalone.sh
=========================================================================
JBoss Bootstrap Environment
JBOSS_HOME: /opt/wildfly-10.0.0.CR2
JAVA: java
JAVA_OPTS: -server -Xms64m -Xmx512m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n
=========================================================================
ERROR: transport error 202: bind failed: Address already in use
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [debugInit.c:750]
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
standalone.sh: line 302: 3096 Abort trap: 6 "java" …Run Code Online (Sandbox Code Playgroud) 在我的root用户的Android应用程序上,我执行关闭
su reboot -p
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我注意到手机几乎立即关闭(而不是显示关机动画,可能正在做其他事情).
这是以编程方式关闭Android手机的正确方法吗?是否有一些关键代码需要在关机前执行?
是否有任何可能的方法将swing添加到关闭钩子中(即,在VM关闭时显示弹出窗口)?
我意识到如果我尝试创建一个新的JFrame,它会给我一个错误,因为它试图注册一个关闭钩子,因为VM已经关闭而失败.我只是想知道是否有任何解决方法
在Java中处理线程时,处理InterruptedException似乎是我身边的一个特殊刺.我很欣赏它在我的线程被终止时被抛出的事实,因此我有机会进行清理.对我来说似乎很奇怪的是,这不是一个未经检查的例外.
这会产生以下问题:a)如果我想在我的线程应用程序中使用现有框架,我将被迫将其转换为框架接口接受的异常.因此,框架通常会误解它,而不是按照它应该清理或传播它.
b)除非为堆栈中的每个调用严格声明InterruptedException(并且通常不是因为a),否则很难干净地关闭.
如果取消选中InterruptedException,那么它似乎会有更高的可能性,并且通常会导致线程和应用程序的干净关闭.为什么不呢?
我在 Ubuntu 18.04 服务器上查看进程列表,看到以下两个进程:
930 ? Ssl 0:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
958 ? Ssl 0:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
Run Code Online (Sandbox Code Playgroud)
我确定我没有启动它们。这些是什么?它们有害吗?我如何阻止它们再次出现?
shutdown ×10
c# ×3
java ×2
.net ×1
acpi ×1
android ×1
batch-file ×1
dispatcher ×1
idisposable ×1
jboss ×1
osx-yosemite ×1
python ×1
r ×1
restart ×1
root ×1
swing ×1
ubuntu ×1
upgrade ×1
vmware ×1
waithandle ×1
winapi ×1
windows ×1
windows-7 ×1
wpf ×1