Der*_*rek 6 c# winapi ui-automation
我注意到setforegroundwindow可能非常不稳定 - 无论你怎么做.
我注意到在可能的情况下使用UIAutomation似乎可以改善一些事情.
例如:
获取WindowPattern并使用如下内容:
windowPattern.SetWindowVisualState( WindowVisualState.Normal );
windowPattern.SetWindowVisualState( WindowVisualState.Maximized );
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:
我怎么知道我是否应该使它最大化或正常.任务经理和龙自然都说似乎都知道如何做到这一点.如果之前最大化,然后最小化,我想在切换到它时最大化窗口.如果以前没有最大化,我想把它变成"正常".
有任何想法吗?
AutomationElement 的 SetFocus 不起作用。
来自以下问题: 获取另一个进程的窗口状态
我发现 GetPlacement api 给了我我需要的东西:
if ( (windowplacement.flags & WPF_RESTORETOMAXIMIZED) > 0 )
{
windowPattern.SetWindowVisualState( WindowVisualState.Maximized );
}
else
{
windowPattern.SetWindowVisualState( WindowVisualState.Normal );
}
Run Code Online (Sandbox Code Playgroud)
这样,如果窗口已最大化,则窗口将恢复为最大化;如果窗口未最大化,则将恢复正常。