如何最大限度地利用TestStack.White桌面应用程序被最小化后,

问题描述 投票:1回答:2

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

但是,一旦它被最小化我必须做与浏览器的一些操作,并再次切换回桌面应用程序。我在这里面对代码的问题,在这里我需要点击任务栏中的应用程序按钮使其最大化。

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

c# desktop-application ui-automation white
2个回答
1
投票

WinPattern不再公开。相反,你可以使用一个displayState属性。 E.克.:

wnd.DisplayState= DisplayState.Maximized;

0
投票

因此,经过寻找到白是如何暴露WindowPattern我能找到的Window类称为WinPattern返回一个WindowPattern公共财产。让窗口模式后,你应该能够调用WindowPattern.SetWindowVisualState

WindowPattern.SetWindowVisualState链接有如何使用此模式一些很好的示例代码。我补充说,最相关的使用白在这里,因为白色的手柄时得到的图案为你的代码。

///--------------------------------------------------------------------
/// <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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.