Пример #1
0
        private bool GetFields(Image image, out OriginInputFileds focusedField, out OriginInputFileds checkedField)
        {
            focusedField = OriginInputFileds.None;
            checkedField = OriginInputFileds.None;

            try
            {
                #region Get UI Fields State
                using (var tr = new ImageTraverser(image))
                {
                    bool usernameFocused = tr[45, 187] == ColorTranslator.FromHtml("#EDBD69").ToArgb();
                    bool passwordFocused = tr[45, 237] == ColorTranslator.FromHtml("#EDBD69").ToArgb();
                    bool keepPasswordFocused = tr[45, 370] == ColorTranslator.FromHtml("#EEBD67").ToArgb();
                    bool keepPasswordChecked = tr[54, 366] == ColorTranslator.FromHtml("#FF9900").ToArgb();
                    bool invisibleFocused = tr[45, 367] == ColorTranslator.FromHtml("#EEBD67").ToArgb();
                    bool invisibleChecked = tr[54, 394] == ColorTranslator.FromHtml("#FF9900").ToArgb();
                    bool forgotPasswordFocused = tr[200, 271] == ColorTranslator.FromHtml("#000000").ToArgb();
                    bool createAccountFocused = tr[142, 447] == ColorTranslator.FromHtml("#000000").ToArgb();

                    if (passwordFocused) { focusedField = OriginInputFileds.Password; }
                    if (usernameFocused) { focusedField = OriginInputFileds.Username; }
                    if (forgotPasswordFocused) { focusedField = OriginInputFileds.ForgotPassword; }
                    if (keepPasswordFocused) { focusedField = OriginInputFileds.StayConnected; }
                    if (invisibleFocused) { focusedField = OriginInputFileds.Invisible; }
                    if (createAccountFocused) { focusedField = OriginInputFileds.CreateAccount; }
                    if (keepPasswordChecked) { checkedField = checkedField ^ OriginInputFileds.StayConnected; }
                    if (invisibleChecked) { checkedField = checkedField ^ OriginInputFileds.Invisible; }
                    return true;
                }
                #endregion
            }
            catch
            {
                return false;
            }
        }
Пример #2
0
 private int GetInitialSteps(OriginInputFileds field)
 {
     switch (field)
     {
         case OriginInputFileds.Password:
             return 5;
         case OriginInputFileds.Connect:
         case OriginInputFileds.ForgotPassword:
             return 4;
         case OriginInputFileds.StayConnected:
             return 3;
         case OriginInputFileds.Invisible:
             return 2;
         case OriginInputFileds.CreateAccount:
             return 1;
         case OriginInputFileds.None:
             return 2;
         default: return 0;
     }
 }
Пример #3
0
        private bool FocusField(Process originProcess, OriginInputFileds field, int tries)
        {
            WindowInfo window = new WindowInfo(originProcess.MainWindowHandle);
            WindowsInput.KeyboardSimulator sim = new WindowsInput.KeyboardSimulator();

            for (int i = 0; i < tries; i++)
            {
                try
                {
            #if !DEBUG
                    User32.BlockInput(true);
            #endif

                    //reactivate window
                    window.BringToFront();
                    window.Activate();

                    //create input variables
                    OriginInputFileds focusedField = OriginInputFileds.None;
                    OriginInputFileds checkedField = OriginInputFileds.None;

                    bool aero_on = false;

                    //check if aero is on
                    if (Environment.OSVersion.Version.Major > 5)
                        Win32API.Modules.DwmApi.DwmIsCompositionEnabled(out aero_on);

                    //grab snapshot
                    var image = aero_on ? Imaging.CaptureScreenRegion(originProcess.MainWindowHandle) : Imaging.CaptureWindowImage(originProcess.MainWindowHandle);

                    if (this.GetFields(image, out focusedField, out checkedField))
                    {
                        if (focusedField == field)
                            return true;
                    }

                    //send tab
                    sim.KeyPress(WindowsInput.Native.VirtualKeyCode.TAB);

                    //pause
                    System.Threading.Thread.Sleep(250);
                }
                catch
                {
                    throw;
                }
                finally
                {
            #if !DEBUG
                    User32.BlockInput(false);
            #endif
                }
            }
            return false;
        }