从CMD终止过程:最软到最困难 我想知道是否有人有使用命令行使用taskkill和WIMC终止进程的经验。 我想知道是否有人从“最软”(最不起作用)的命令到“最难”(最有力)的命令知道关闭/终止这些命令的“难”程度的顺序: / p>
我的猜测是:
最小/最柔软
1)taskkill / im processname.exe
2)wmic进程,其中name =“ processname.exe”调用终止
3)wmic进程,其中name ='processname.exe'删除
4)taskkill / f / im processname.exe
最/最重
我正在尝试创建一个批处理命令文件,并且想知道它们之间的区别,以查看应该使用哪个文件。 我更喜欢使用软关闭,检查进程是否仍在运行,然后尝试硬关闭,然后重复此操作,直到程序成功关闭。关于这些之间的差异的任何信息都将有所帮助,尤其是在通过CMD使用终止和删除之间:WMIC会有所帮助,因为我在它们的任何地方都找不到文档。
答案 0 :(得分:0)
正如CatCat所述,有两种主要方法来终止进程:WM_CLOSE
和TerminateProcess()
。为了完整起见,我还添加了两个。
将窗口消息WM_CLOSE
发送到进程的主窗口。这与用户单击X
按钮以关闭窗口时应用程序收到的消息相同。然后,该应用可以正常关闭或询问用户确认-例如,是否有未保存的工作。
taskkill
的 /f
似乎试图这样做,但似乎并不总是能够成功找到要关闭的正确窗口。如果该应用程序没有可见的窗口(例如,如果它仅在系统任务栏中显示图标或是无窗口的服务器),则它可能会完全忽略此消息。
如果taskkill
对您不起作用,则NirCmd:可能做得更好:NirCmd.exe closeprocess iexplore.exe
还有WM_ENDSESSION
消息-操作系统在关闭时(在WM_QUERYENDSESSION
之后)发送。除了发送到整个应用程序而不是特定窗口之外,它的工作方式几乎相同。根据参数,可能会要求应用程序将工作保存到临时文件中,因为系统需要重新启动才能应用某些更新。有些应用程序对此消息做出反应,而有些则没有。
应该{{3}}手动发送这些消息,但是除了测试应用如何对关闭做出反应而不实际关闭操作系统之外,我还没有看到它。
possible消息表明整个应用程序都需要关闭(更具体地说,它已发送到线程)。通常,应用程序应该在窗口关闭后将其发布到自身,现在该结束该过程了。
WM_QUIT
是手动将消息发布到另一个进程的每个线程,但这是骇人听闻的,很少见,它可能会使不希望从外部发出此消息的进程崩溃。我不确定是否比终止过程更好的选择。
possible通知操作系统强制终止该过程。单击End process
中processes
选项卡上的task manager
按钮时,会发生这种情况。该进程不会被通知正在关闭-只是停止在原处并从内存中删除-没问题,没有关机等。
如果当时正在写入某些文件或传输了数据,则可能导致损坏。
这就是taskkill /f
命令的作用。尽管我不确定,wmic process call terminate
和wmic process delete
似乎也都这样做。