如何在最小化后使用TestStack.White最大化桌面应用程序

时间:2017-05-29 08:57:47

标签: c# desktop-application ui-automation white

我有一个代码,可以使用应用程序右上角的最小化按钮来最小化桌面应用程序。

但是一旦最小化,我必须对浏览器进行一些操作,然后再切换回桌面应用程序。我在这里遇到代码问题,我需要点击任务栏中的应用程序按钮来最大化它。

任何人都可以帮助我这个或任何其他方式来最大限度地减少应用程序的最小化?我不应该关闭或重新打开它,因为一些上传将会进行中。

2 个答案:

答案 0 :(得分:1)

WinPattern不再公开。而是可以使用DisplayState属性。 例如:

wnd.DisplayState= DisplayState.Maximized;

答案 1 :(得分:0)

因此,在研究了White如何公开WindowPattern后,我能够在名为WindowWinPattern类中找到一个返回WindowPattern的公共属性。获得窗口模式后,您应该可以调用WindowPattern.SetWindowVisualState

WindowPattern.SetWindowVisualState的链接有一些关于如何使用此模式的良好示例代码。我在这里添加了与使用White最相关的代码,因为White会为你处理模式。

///--------------------------------------------------------------------
/// <summary>
/// Calls the WindowPattern.SetVisualState() method for an associated 
/// automation element.
/// </summary>
/// <param name="windowPattern">
/// The WindowPattern control pattern obtained from
/// an automation element.
/// </param>
/// <param name="visualState">
/// The specified WindowVisualState enumeration value.
/// </param>
///--------------------------------------------------------------------
private void SetVisualState(WindowPattern windowPattern, 
    WindowVisualState visualState)
{
    try
    {
        if (windowPattern.Current.WindowInteractionState ==
            WindowInteractionState.ReadyForUserInteraction)
        {
            switch (visualState)
            {
                case WindowVisualState.Maximized:
                    // Confirm that the element can be maximized
                    if ((windowPattern.Current.CanMaximize) && 
                        !(windowPattern.Current.IsModal))
                    {
                        windowPattern.SetWindowVisualState(
                            WindowVisualState.Maximized);
                        // TODO: additional processing
                    }
                    break;
                case WindowVisualState.Minimized:
                    // Confirm that the element can be minimized
                    if ((windowPattern.Current.CanMinimize) &&
                        !(windowPattern.Current.IsModal))
                    {
                        windowPattern.SetWindowVisualState(
                        WindowVisualState.Minimized);
                        // TODO: additional processing
                    }
                    break;
                case WindowVisualState.Normal:
                    windowPattern.SetWindowVisualState(
                    WindowVisualState.Normal);
                    break;
                default:
                    windowPattern.SetWindowVisualState(
                    WindowVisualState.Normal);
                    // TODO: additional processing
                    break;
            }
        }
    }
    catch (InvalidOperationException)
    {
        // object is not able to perform the requested action
        return;
    }
}