: 这两个模拟器还有一个共同的问题,
: 即使暂停模拟器的运作,shader仍然会继续画面的运算,
: 所以GPU会一直维持在高负载的状态。
: 有时候游戏玩到一半,我会暂停模拟器开其他的视窗查攻略资料,
: 这时因为shader仍然在继续运算,GPU的负担非常重,
: 所以会拖累其他视窗的显示效能,反应会变得相当迟钝。
有些模拟器或游戏不提供暂停的功能,或者是暂停时仍然继续吃系统资源,
想了一个方法,把正在执行中的模拟器或游戏的程序从系统中完全暂停,
等要玩的时候再恢复,就不会在暂停的时候继续吃系统资源了。
暂停程序可以用微软的ProcessExplorer,这是一个图形界面的程式,
所以要暂停程式需要切换视窗加鼠标点击,使用上就不是非常便利,
这里推荐用微软的另一个命令列工具PSTools
https://docs.microsoft.com/zh-tw/sysinternals/downloads/pstools
下载后解压缩,执行pssuspend/pssuspend64就可以暂停运行中的程序。
例如我们要暂停BizHawk的EmuHawk.exe运作
就在命令列输入
pssuspend64.exe" "EmuHawk"
要恢复运行
pssuspend64.exe" -r "EmuHawk"
把要执行的命令在文字编辑器中写好存成.bat批次档,
我们加一个判断,先侦测程序是否有在运行,
如果在运行中,将程序暂停;
如果程序已经在暂停中,则将程序恢复运行。
@echo off
:: 用tasklist指令寻找EmuHawk.exe是否运行中
tasklist /nh /fi "ImageName eq EmuHawk.exe" /fi "STATUS eq RUNNING" | find /I /N "EmuHawk.exe" >nul
:: 如果运行中,则将程序暂停,如果暂停中,则将程序恢复
if "%ERRORLEVEL%"=="0" ("pssuspend64.exe" -nobanner "EmuHawk") else ("pssuspend64.exe" -nobanner -r "EmuHawk")
点击bat的时候会出现cmd视窗一闪而过,如果不希望出现闪退的视窗,
可以用vbs执行cmd的指令,或者另外写一个
set ws=WScript.CreateObject("WScript.Shell")
ws.Run "批次档的名字.bat",0
存成.vbs和.bat放在一起,点击执行这个vbs执行就不会出现cmd视窗。
然后下载JoyToKey的最新版6.1.1
https://joytokey.net/en/download
从6.1版开始JoyToKey支援按一个手把的按钮来启动执行外部的程式。
选一个游戏中不会用到,又很方便按的按钮作为暂停按钮,
例如右上的扳机,指定扳机开启刚刚写好的.vbs,
这样当按下这个按钮就会自动暂停或恢复EmuHawk.exe。
注意以上的批次档或vbs的指令需要指定档案所在的路径,
例如你的pssuspend64.exe放在 C:\PSTools 底下的话,
就要写"C:\PSTools\pssuspend64.exe"。
vbs的批次档也是
ws.Run "C:\xxxx\批次档的名字.bat",0
不然系统会找不到要执行的档案。