2012-01-06 6 views
3

유창한 리본 컨트롤 (www.fluent.codeplex.com)을 자동화하려고합니다. 나는 대부분의 통제를 자동화하는데 성공했다. 그러나 Close, Maximize 및 Minimize Button과 같은 문제가 UI Automation Tool에서 인식되거나 식별되지 않습니다 (예 : Visual Studio를 사용한 코드화 된 UI 테스트). 스파이 도구는 닫기, 최대화, 최소화 등의 단추를 식별하지 않습니다. 자동화를 통해 응용 프로그램을 닫을 수 없습니다 (유창한 리본을 사용함).Fluent (Codeplex) 리본에서의 닫기, 최대화, 최소화 버튼의 자동화 - WPF 애플리케이션

내가 RibbonWindow.xaml

<StackPanel x:Name="PART_ButtonsPanel" HorizontalAlignment="Right" Margin="0,8,8,0" VerticalAlignment="Top" Orientation="Horizontal"> 
      <Button x:Name="minimizeButton" Style="{DynamicResource CaptionButtonStyle}" Width="35" Height="19" BorderThickness="1,0,0,1" Command="{x:Static Fluent:RibbonWindow.MinimizeCommand}"> 
      <Image Width="Auto" Height="Auto" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="None" Source="{DynamicResource ImageCaptionButtonMinimize}" SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="NearestNeighbor"/> 
      </Button> 
      <Button x:Name="maximizeButton" Margin="-1,0,0,0" Style="{DynamicResource CaptionButtonStyle}" Width="35" Height="19" BorderThickness="0,0,0,1" Command="{x:Static Fluent:RibbonWindow.MaximizeCommand}"> 
      <Image Width="Auto" Height="Auto" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="None" Source="{DynamicResource ImageCaptionButtonMaximize}" SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="NearestNeighbor"/> 
      </Button> 
      <Button x:Name="normalizeButton" Margin="-1,0,0,0" Style="{DynamicResource CaptionButtonStyle}" Width="35" Height="19" BorderThickness="0,0,0,1" Command="{x:Static Fluent:RibbonWindow.NormalizeCommand}"> 
      <Image Width="Auto" Height="Auto" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="None" Source="{DynamicResource ImageCaptionButtonNormalize}" SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="NearestNeighbor"/> 
      </Button> 
      <Button x:Name="closeButton" Margin="-1,0,0,0" Style="{DynamicResource CaptionButtonStyle}" Width="35" Height="19" BorderThickness="0,0,1,1" Background="Red" Command="{x:Static Fluent:RibbonWindow.CloseCommand}"> 
      <Image Width="Auto" Height="Auto" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="None" Source="{DynamicResource ImageCaptionButtonClose}" SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="NearestNeighbor"/> 
      </Button> 
     </StackPanel> 

코드의 다음 섹션보고 있었다 나는 (자동화 아이디를 넣어 같은) 물건을 많이 시도했지만 아무도 일하지. 코드의 잘못된 부분을보고 있습니까?

누군가가 닫기 단추에 자동화 UI 또는 이름을 입력하는 데 도움을 줄 수 있습니까? 아니면 문제를 해결할 수있는 이유가 있습니까? 유일한 요구 사항은 응용 프로그램의 닫기, 최대화, 최소화 단추가 UI 자동화 도구로 식별되어야한다는 것입니다.

안부

+0

모든 솔루션? 나는 이것을 Codeplex에도보고했지만 아직 답장을 보내지 않았다. – user1134352

답변

0

이것은 당신이 버튼을 식별하는 데 도움이되지 않습니다,하지만 당신은 실제로 작업을 수행 할 수있는 창에 표준 키보드 단축키를 전송 시도 할 수 있습니다 : 당신은에 대한 Automation Spy을 시도 할 수 있습니다

//close the window 
Keyboard.SendKeys(myWindow, "{F4}", ModifierKeys.Alt); 
+0

다음과 같이 애플리케이션을 다르게 닫을 수 있습니다 : 파일 -> 종료. 그러나 필자의 요구 사항은 자동화 도구에서 일부 자동화 UID 또는 이름을 사용하여 리본 윈도우의 닫기, 최대화 및 최소화 단추를 식별하는 것입니다. 따라서 Visual Studio와 같은 자동화 도구를 사용하여 닫기 버튼을 클릭해야합니다. – user1134352

0

을 두 번째 수표. UI 자동화가 아무 것도주지 않으면 제어 창에 WM_CLOSE와 같은 Win32 메시지를 보내고 (SendMessage 참조) 매개 변수 SW_MAXIMIZE, SW_MINIMIZE와 함께 ShowWindow 함수를 사용할 수 있습니다.

관련 문제