基本上,问题是 Windows 与 Linux 的等效之处是什么,即从那里更改 tty、登录和终止进程?
情况:有时,当似乎没有合理的方法在 Linux 下运行游戏时,我会切换回 Windows 玩游戏。问题是,其中一些游戏往往会频繁崩溃(屏幕冻结)。但是,当我尝试打开任务管理器时,会出现黑屏或根本无法退出游戏,需要我重新启动计算机。使用 Linux 已有一段时间了,通常不需要因为不重要的应用程序而重新启动,我想 Windows 可能也考虑到了这个问题。可能是我想在后台运行另一个重要的应用程序,而这个应用程序不应该在游戏期间停止。
tl;dr 当无法切换到任务管理器 rsp 时,如何在 Windows 中终止进程或与命令行交互。通过不需要其他应用程序的离线解决方案按 Alt-Tab 切换到任何其他窗口,包括命令行和 PowerShell?
编辑: 我已经尝试过但在游戏中不起作用的方法:
尝试进入 cmd/taskmanager:
Ctrl+Alt+Del
<-- 证明机器仍然响应,因为它确实切换到我可以选择任务管理器的菜单,但是一旦我单击,我只会看到一个任务栏,上面有黑色的窗口或冻结的游戏屏幕,但没有工作的窗口......Ctrl+Shift+Esc
Win+x
Win+r
尝试退出应用程序:
Alt+F4
press red X-button at right corner
(冻结时无响应)
尝试切换到其他窗口:
Alt+Tab
打开新的虚拟桌面:
Win+Tab
Ctrl+Win+Tab
看来,Windows 键绑定是上下文相关的。还有其他方法可以强制退出无响应的应用程序吗?
什么可能有效:
Switch user
通过Ctrl+Alt+Del
(但为了终止进程而创建另一个用户似乎有些过分)sign out, sign in
(但这也会关闭仍然应有响应的应用程序,这是我想要避免的,但至少比完全重启要好)
我认为到目前为止,以下方法似乎有效(后者并不总是可用,但前者到目前为止似乎可以可靠地工作):
Task Manager -> Options > Always on Top
- 我创建了一个快捷方式并将
C:\Windows\System32\taskkill.exe /f /fi "status eq not responding"
其固定到任务栏
但是,这似乎不能很好地扩展,如果我需要的不仅仅是通过任务管理器关闭进程或调用另一个命令(例如不 kill)该怎么办?全部没有响应的进程,但只有一个特定的进程,我还必须找出其 PID?
答案1
使用 Powershell。以管理员身份启动它,然后使用获取进程结合停止进程列出并停止进程/任务。要列出任务/进程:
Get-Process
列出没有响应的进程:
Get-Process | Where { !$_.Responding }
要停止无响应的任务:
Get-Process | Where { !$_.Responding } | Stop-Process -Force
要根据任务 ID 停止任务,请先获取进程。记下要停止的进程的 ID,然后运行 Stop-Process cmdlet。将其替换IDofProcess
为进程 ID
Get-Process
Stop-Process -PID IDofPRocess -Force
答案2
您可以使用免费 自动热键。
Ctrl以下脚本将在按下++时终止拥有活动窗口Alt的进程 K:
^!k:: ; Ctrl+Alt+K
WinGet, PID, PID, % "ahk_id " WinExist("A") ; Get process owning active window
Process, Close, %PID% ; Close this process
安装 AutoHotKey 后,将脚本放入.ahk
文件中并双击进行测试。您可以通过右键单击托盘栏中的绿色 H 图标并选择退出来停止脚本。要让它在登录时运行,请将其放在 的启动组中
C:\Users\USER-NAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
。
有用的 AutoHotkey 文档: