我有一些Windows10LTSC/物联网数字标志,在引导时启动ShareX屏幕捕捉应用程序,如下所示:
"C:\Program Files\ShareX\ShareX.exe" -silent -startautocapture在自动捕获触发后,目标配置被设置为将图像发送到URL,但是当网络中断发生时,ShareX用户界面的z指数要高于四风数字标志软件显示的z索引,并且一直保持在那里,直到手动关闭或最小化。
我已经浏览过ShareX文档,但是没有提到这种行为,自定义Uploader选项只包括指定要显示的错误消息。有人有关于抑制或最小化UI的想法吗?可能是转移焦点的PowerShell技巧吗?
发布于 2022-09-02 16:17:44
Per @zett42 42评论我是从这个答案开始的。不幸的是,ShareX和ShareX 8.14显然都不是正确的ConsoleWindowClass。
[int]$handle = [WPIA.ConsoleUtils]::FindWindow('ConsoleWindowClass','ShareX 8.14')
最后,这个答案使它能够使用
$handle = $fw::FindWindow([IntPtr]::Zero, 'ShareX 8.14' )
由于它的名称中有一个版本号,所以我需要整理一个枚举策略,以便在打开的窗口上迭代并进行子字符串匹配,但现在这是成功的。
我对PowerShell非常陌生,所以这可能是不体面的做法。
$sig = @'
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(IntPtr sClassName, String sAppName);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam);
[DllImport("kernel32.dll")]
public static extern uint GetLastError();
public const int WM_SYSCOMMAND = 0x0112;
public const int SC_MINIMIZE = 0xF020;
'@
$fw = Add-Type -Namespace WPIA -Name ConsoleUtils -MemberDefinition $sig -PassThru
$wname='ShareX 14.1' # any existing window name
[int] $handle = $fw::FindWindow([IntPtr]::Zero, $wname ) # returns the Window Handle
if ($handle -gt 0)
{
[void][WPIA.ConsoleUtils]::SendMessage($handle, [WPIA.ConsoleUtils]::WM_SYSCOMMAND, [WPIA.ConsoleUtils]::SC_MINIMIZE, 0)
}https://stackoverflow.com/questions/73575796
复制相似问题