3 votes

SetScrollPercent pour les films et la télévision avec FlaUI

J'essaie d'automatiser le curseur du processus Films et TV. enter image description here

et j'ai essayé le code ci-dessous :

using System;
using System.Diagnostics;
using FlaUI.UIA3;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Process[] AllProcesslist = Process.GetProcesses();

            foreach (Process Proc in AllProcesslist)
            {
                if (!String.IsNullOrEmpty(Proc.MainWindowTitle) && Proc.MainWindowTitle == "Movies & TV")
                {
                    Console.WriteLine("Window Found!");
                    var app = new FlaUI.Core.Application(Proc);
                    using (var automation = new UIA3Automation())
                    {
                        var window = app.GetMainWindow(automation);
                        var elem = window.FindFirstDescendant(cf => cf.ByAutomationId("ProgressSlider"));
                        Console.WriteLine(elem);
                        elem.Patterns.Scroll.Pattern.SetScrollPercent(20, -1);
                    }
                }
            }

            Console.Read();
        }
    }
}

Mais il revient FlaUI.Core.Exceptions.PatternNotSupportedException: 'The requested pattern 'Scroll [#10004]' is not supported' , J'ai utilisé FlaUInspect puis je me suis rendu compte qu'il ne supporte que ScrollItem et RangeValue, alors j'ai changé elem.Patterns.Scroll.Pattern.SetScrollPercent(20, -1) a elem.Patterns.ScrollItem.Pattern.SetScrollPercent(20, -1) mais il n'y a pas de SetScrollPercent pour cela.

Comment puis-je automatiser cela ?

0voto

hamidreza Points 48

J'ai utilisé RangeValue au lieu de ScrollItem et maintenant ça marche !

using System;
using System.Diagnostics;
using FlaUI.UIA3;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Process[] AllProcesslist = Process.GetProcesses();

            foreach (Process Proc in AllProcesslist)
            {
                if (!String.IsNullOrEmpty(Proc.MainWindowTitle) && Proc.MainWindowTitle == "Movies & TV")
                {
                    Console.WriteLine("Window Found!");
                    var app = new FlaUI.Core.Application(Proc);
                    using (var automation = new UIA3Automation())
                    {
                        var window = app.GetMainWindow(automation);
                        var elem = window.FindFirstDescendant(cf => cf.ByAutomationId("ProgressSlider"));
                        elem.Patterns.RangeValue.Pattern.SetValue(64);
                        Console.WriteLine(elem.Patterns.RangeValue.Pattern.Value);
                    }
                }
            }

            Console.Read();
        }
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X