我目前是软件开发人员,我正在使用一堆工具,所以在完成工作之后我需要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多个文件
在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] 举报,一经查实,本站将立刻删除。