微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何发送关机命令通过Windows上的CMD提示进行处理

我目前是软件开发人员,我正在使用一堆工具,所以在完成工作之后我需要closures它们。 所以我做了什么,我用tskill命令创build了batch file,以及我使用的程序列表

tskill skype tskill outlook tskill devenv tskill explorer start explorer

这有一个问题,当进程被终止时,工具的改变不会被保存,例如上一个项目,打开的文件,控件的视觉位置以及所有其他东西。 这些设置只有在closures工具时才会保存,但点击其中的每一个都非常耗时。

所以我的问题是: 我可以发送关机命令,而不是杀死进程的软件?

注意: 我需要CMD的命令,而不是编程解决scheme,正如我上面提到的,我需要像“tskill skype”这样的杀死skype进程的命令。 Windows可以发送这个命令,因为当你closures你的窗口时,windows正在向所有正在运行的程序发送关机命令。 但是,如果不能closures,那么Windows杀死进程,因为我上面这样做。

PHP设置系统调用的脚本超时,set_time_limit不起作用

Linux的mv如何在内部工作?

bash如何处理嵌套引号?

删除所有子目录和子文件,而不删除父/根目录?

在Windows上创build桌面链接的脚本?

提前致谢。

从linux命令行连续数据stream到Python脚本

CURL进度条:如何使用greppipe道和提取数字?

通过Windows命令行运行Python脚本

在命令行上查找并replace多个文件

如何在没有中间文件夹的情况下将文件添加到zip存档

在Windows 7上测试:

taskkill /IM notepad.exe

请注意,您必须指定.exe扩展名。 我认为这是你所需要的:它不会简单地杀死进程,而是发送“关闭”信号,这将显示“保存未保存的更改? 在记事本和其他编辑器中的对话框。

如果您的应用程序支持标准的Windows消息,则可以使用rmtool对应用程序进行撒谎,并告诉它计算机正在关闭。 请参阅如何模拟Windows关机进行调试?

为了编写脚本,您需要先找到进程的PID(sysinternals提供的pslist提供信息,但您需要解析结果)。

如果他们不干脆关闭只是做窗户时,它关闭:使用rmtool要求所有人退出很好,然后30秒后杀死每个人仍然站在(对于前景和devenv,它可能甚至有点短… )。

在结束进程之前(至少不是用批处理文件),没有办法发送保存命令,但可以从C#(控制台应用程序?)手动执行。

using System.Diagnostics; using System.Runtime.InteropServices; class Program { [DllImport("user32.dll")] public static extern int SetForegroundWindow(IntPtr hWnd); static void Main(string[] args) { var ps = Process.GetProcessesByName("devenv"); foreach (var p in ps) { if (!p.MainWindowTitle.Contains("api")) { SetForegroundWindow(p.MainWindowHandle); System.Windows.Forms.SendKeys.SendWait("^+S"); //simulates CTRL + SHIFT + S p.CloseMainWindow(); } } }

我用VS定义的快捷方式File-> Save All

还有一个更难的方法,使用Windows Api,但你不想去简单的应用程序的路线:)

注意:您需要引用System.Windows.Forms

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐