|
本帖最后由 Anduin 于 2024-10-28 22:33 编辑
293v3.0
我选择了开机自动启动,并勾选了最小化。但是重启以后,它仍然会展示自己为一个窗口。
这让我非常痛苦。我的设备是一个放映机。它每次开机,放映出去的内容都变成了这个驱动程序。。
我试了试这个方案:
```powershell
$path = "C:\Program Files (x86)\StreamDock\StreamDock.exe"
Start-Process -FilePath $path -WindowStyle Hidden
```
诡异的是,它仍然会显示出来。即使我传递了参数 -WindowStyle Hidden。我猜测代码里可能有一些奇技淫巧,强制让自己突出出来。
于是我的需求变成了:既需要开机自动启动StreamDock,又禁止它展现任何窗口。
我只能用这个方法缓解:While true,然后不停试图关闭这个窗口。(我发现只关一次不行,关了它还会弹。):
```powershell
while ($true) {
$process = Get-Process -Name "StreamDock" -ErrorAction SilentlyContinue
if ($process) {
$windowHandle = (Get-Process -Name "StreamDock").MainWindowHandle
if ($windowHandle -ne 0) {
# 调用 Windows API 发送 WM_CLOSE 消息
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class WinAPI {
[DllImport("user32.dll", SetLastError = true)]
public static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
}
"@
$WM_CLOSE = 0x0010
[WinAPI]::SendMessage($windowHandle, $WM_CLOSE, [IntPtr]::Zero, [IntPtr]::Zero)
}
}
Start-Sleep -Milliseconds 500
}
```
为了让上述 PowerShell 能够无感知的开机自动运行,额外创建 Run.vbs:
```vb
Set objShell = CreateObject("WScript.Shell")
objShell.Run "powershell -WindowStyle Hidden -ExecutionPolicy Bypass -File ""C:\Users\Anduin\Documents\Scripts\start_and_close_stream_deck.ps1""", 0
Set objShell = Nothing
```
再创建一个Windows任务计划程序,在我登录时启动这段 Run.vbs,即可避免它创建窗口。
当然,这个方案有些丑陋。但是Work。
|
|