老样子,先放代码。这里是GitHub仓库。
启动网易云音乐和WallpaperEngine.bat
cd /d D:\Program Files (x86)\Netease\CloudMusic
start cloudmusic.exe
cd /d D:\Program Files (x86)\Steam\steamapps\common\wallpaper_engine
start launcher.exe
wallpaper32.exe -control play关闭网易云音乐和WallpaperEngine.bat
cd /d D:\Program Files (x86)\Netease\CloudMusic
taskkill /f /im cloudmusic.exe
cd /d D:\Program Files (x86)\Steam\steamapps\common\wallpaper_engine
taskkill /f /im ui32.exe
wallpaper32.exe -control stop大部分指令都在上一篇博客提到过,taskkill和wallpaper32.exe -control除外。
taskkill…顾名思义就是“杀死任务”。两个参数的话先来看看微软官方的解释:
两个参数的官方英文解释
/f:Specifies that processes be forcefully ended. This parameter is ignored for remote processes; all remote processes are forcefully ended.
/im<imagename>:Specifies the image name of the process to be terminated. Use the wildcard character (*) to specify all image names.
第一个很明显,就是”force”的意思,强制终止该进程。不过这里其实用/t去结束该进程及其子进程会更好一些,不过我担心把电脑玩坏所以还是选择了比较保险的/f。
第二个参数,简单来说就是指定你要关闭的”exe“。至于这里的image被翻译成映像,初次接触可能有点懵,后期找个时间再解释为啥把它翻译成映像,以及映像和exe到底有什么关系。
而wallpaper32.exe -control则是通过CMD控制wallpaper engine,详细可见官方文档。不过其他的命令其实不太常用,这里也只用到了-control play/stop这两个参数。
至于为什么要带这两个参数。首先是对于“关闭wallpaper engine”这个bat,ui32.exe为wpe(为了方便,用wpe简称wallpaper engine)的ui界面,而wallpaper32.exe才是wpe的后台应用。然而虽然通过taskkill强制停止ui32.exe时不会有啥问题,但是强制停止wallpaper32.exe时则会导致wpe占用的资源无法被完全释放,会出现“即使关闭了wpe的进程及其子进程,你的桌面背景却无法复原”的情况。
写者注
如果强制退出wpe时碰到这种情况可以通过重新打开wpe,再通过右键右下角系统托盘wpe的小图标手动退出,即可解决。
所以我们要通过命令行控制wpe,让它自己去释放自己占用的资源。这也是为啥要用wallpaper32.exe -control stop去关闭wpe的原因。
不过这么关闭还会有一个问题,wpe在下次启动时不会自动加载你上次退出时使用的壁纸。所以要用wallpaper32.exe -control play来播放壁纸。
写者注
用CMD操控wpe的话,可以指定要播放的壁纸。具体的可以参考官方文档。
写者注
一开始想把这篇文章归类到技术栈那块的。但想了想这玩意看下官方文档就能搞懂了,所以想了想还是用了没那么正式的“日志”格式。毕竟”技术栈“那块的文章格式要更加”规范“一定,”日志“这边的文章格式就比较随意了。