最近搭建了一个 frp 内网穿透来让我搭建在本地的 AI 绘图 stable-diffusion-webui 能通过公网访问,但由于 frpc 在 Windows 下是个命令行程序,所以用 bat 配置开机自启动后每次开机都会先弹出一个大黑框还不能关,实在是让人不爽,遂研究了一下有没有什么方法能隐藏掉这个框。

隐藏窗口启动

直接上结论:

1
2
Set ws = CreateObject("WScript.Shell")
ws.run ".\frpc -c frpc.ini",vbhide

随便创建个什么文本文件并在其中写入上面的代码,然后把文件后缀名改成 vbs。

这就是一个 VBScript 脚本,vbs 是一种 Windows 脚本语言,可以用来执行一些简单的任务,大致解释下每段的作用:

  • Set ws = CreateObject("WScript.Shell"): 创建一个名为 ws 的对象,这个对象可以调用 WScript.Shell 的方法和属性。WScript.Shell 是一个提供对系统命令行窗口、环境变量、注册表等的访问和操作的对象。
  • ws.run ".\frpc -c frpc.ini": 用 ws 对象的 Run 方法来运行当前目录下的 frpc 程序(当然也可以是运行这个程序的 bat 脚本),并传递参数 -c frpc.ini 给它,这个参数表示 frpc 应该使用哪一个配置文件。这里的相对路径也可以换成绝对路径,这样这个脚本就可以放在任意地方而不是非得放在要运行的程序所在的目录下了。
  • vbhide: 使用这个关键字可以隐藏程序的 cmd 窗口,vbhide 也可以换成 0 效果是一样的。

写完后可以测试一下:停掉你的程序,双击这个脚本(这时候理论上不会有什么反应但是程序已经启动成功了),用任务管理器或者其他什么方式看看是否有该程序的进程。

开机自启动

这个就很简单了,如果你在脚本中使用了绝对路径可以直接把脚本放在 Windows 的 Startup 文件夹里,可以按快捷键 win + R 调出运行窗口,在输入框输入命令 shell:startup 打开 Startup 文件夹的位置。如果使用了相对路径,可以右键脚本生成一个快捷方式,再把快捷方式放在 Startup 文件夹里。