首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当出现错误时,Powershell能否最小化ShareX用户界面?

当出现错误时,Powershell能否最小化ShareX用户界面?
EN

Stack Overflow用户
提问于 2022-09-01 21:55:30
回答 1查看 29关注 0票数 0

我有一些Windows10LTSC/物联网数字标志,在引导时启动ShareX屏幕捕捉应用程序,如下所示:

代码语言:javascript
复制
"C:\Program Files\ShareX\ShareX.exe" -silent -startautocapture

在自动捕获触发后,目标配置被设置为将图像发送到URL,但是当网络中断发生时,ShareX用户界面的z指数要高于四风数字标志软件显示的z索引,并且一直保持在那里,直到手动关闭或最小化。

我已经浏览过ShareX文档,但是没有提到这种行为,自定义Uploader选项只包括指定要显示的错误消息。有人有关于抑制或最小化UI的想法吗?可能是转移焦点的PowerShell技巧吗?

EN

回答 1

Stack Overflow用户

发布于 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非常陌生,所以这可能是不体面的做法。

代码语言:javascript
复制
$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)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73575796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档