示例#1
0
        internal static void RecordKeys(Keys keyCode, ActionType type)
        {
            if (!MacroForm.sIsRecording)
            {
                return;
            }
            double totalMilliseconds = (DateTime.Now - MacroForm.mBaseDateTime).TotalMilliseconds;

            MacroForm.mBaseDateTime = DateTime.Now;
            MacroForm.AddActionInDictionary(new MacroAction()
            {
                ActionType          = type,
                ActionKey           = keyCode,
                DelayFromLastAction = totalMilliseconds
            });
        }
示例#2
0
        internal static void RecordMouse(
            double x,
            double y,
            double width,
            double height,
            MouseButtons button,
            ActionType type)
        {
            if (!MacroForm.sIsRecording)
            {
                return;
            }
            double totalMilliseconds = (DateTime.Now - MacroForm.mBaseDateTime).TotalMilliseconds;

            MacroForm.mBaseDateTime = DateTime.Now;
            MacroForm.AddActionInDictionary(new MacroAction()
            {
                ActionType          = type,
                MouseButton         = button,
                ActionPointX        = x / width,
                ActionPointY        = y / height,
                DelayFromLastAction = totalMilliseconds
            });
        }
示例#3
0
        public static void PlayMacro(string MacroName)
        {
            Macro macro        = string.IsNullOrEmpty(MacroName) || !MacroData.Instance.DictMacros.ContainsKey(MacroName) ? MacroData.Instance.DictMacros.FirstOrDefault <KeyValuePair <string, Macro> >().Value : MacroData.Instance.DictMacros[MacroName];
            int   windowWidth  = VMWindow.Instance.Width;
            int   windowHeight = VMWindow.Instance.Height;

            if (MacroForm.t != null && MacroForm.t.IsAlive)
            {
                MacroForm.AbortReroll();
            }
            MacroForm.t = new Thread((ThreadStart)(() =>
            {
                try
                {
                    DateTime dateTime = DateTime.Now;
                    switch (macro.RepeatBehaiour)
                    {
                    case RepeatBehaviour.Once:
                        dateTime = DateTime.Now.AddSeconds(2.0);
                        break;

                    case RepeatBehaviour.For5Minutes:
                        dateTime = DateTime.Now.AddMinutes(5.0);
                        break;

                    case RepeatBehaviour.For1hour:
                        dateTime = DateTime.Now.AddHours(1.0);
                        break;

                    case RepeatBehaviour.For8Hour:
                        dateTime = DateTime.Now.AddHours(8.0);
                        break;

                    case RepeatBehaviour.Forever:
                        dateTime = DateTime.Now.AddYears(5);
                        break;
                    }
                    bool flag = true;
                    while (DateTime.Now < dateTime)
                    {
                        if (flag)
                        {
                            flag = (uint)macro.AndroidCommandRepeatMode > 0U;
                            foreach (KeyValuePair <string, SerializableDictionary <string, string> > dictAndroidCommand in (Dictionary <string, SerializableDictionary <string, string> >)macro.DictAndroidCommands)
                            {
                                try
                                {
                                    JsonParser jsonParser = new JsonParser(MultiInstanceStrings.VmName);
                                    if (dictAndroidCommand.Key.StartsWith("MacroSleep"))
                                    {
                                        Thread.Sleep(Convert.ToInt32(dictAndroidCommand.Value.Keys.ElementAt <string>(0)));
                                    }
                                    else if (dictAndroidCommand.Key.Equals("runex") && jsonParser.GetAppInfoFromPackageName(MacroData.Instance.mPackageName) != null)
                                    {
                                        VmCmdHandler.RunCommand(string.Format("runex {0}/{1}", (object)MacroData.Instance.mPackageName, (object)jsonParser.GetAppInfoFromPackageName(MacroData.Instance.mPackageName).Activity), MultiInstanceStrings.VmName, "bgp");
                                    }
                                    else
                                    {
                                        MacroForm.RunCommand(dictAndroidCommand);
                                    }
                                }
                                catch
                                {
                                }
                            }
                        }
                        foreach (KeyValuePair <int, MacroAction> dictMacroAction in (Dictionary <int, MacroAction>)macro.DictMacroActions)
                        {
                            MacroAction macroAction = dictMacroAction.Value;
                            Thread.Sleep((int)macroAction.DelayFromLastAction);
                            switch (macroAction.ActionType)
                            {
                            case ActionType.MouseDown:
                                InputMapper.Instance.HandleMouseDown((object)null, new MouseEventArgs(macroAction.MouseButton, 0, (int)(macroAction.ActionPointX * (double)windowWidth), (int)(macroAction.ActionPointY * (double)windowHeight), 0));
                                continue;

                            case ActionType.MouseUp:
                                InputMapper.Instance.HandleMouseUp((object)null, new MouseEventArgs(macroAction.MouseButton, 0, (int)(macroAction.ActionPointX * (double)windowWidth), (int)(macroAction.ActionPointY * (double)windowHeight), 0));
                                continue;

                            default:
                                continue;
                            }
                        }
                    }
                    MacroForm.t = (Thread)null;
                    HTTPUtils.SendRequestToClient("macroCompleted", (Dictionary <string, string>)null, MultiInstanceStrings.VmName, 0, (Dictionary <string, string>)null, false, 1, 0, "bgp");
                }
                catch (ThreadAbortException ex)
                {
                    Logger.Error("Error running reroll", (object)ex.ToString());
                }
                catch (Exception ex)
                {
                    Logger.Error("Exception in running reroll. Err : ", (object)ex.ToString());
                    HTTPUtils.SendRequestToClient("macroCompleted", (Dictionary <string, string>)null, MultiInstanceStrings.VmName, 0, (Dictionary <string, string>)null, false, 1, 0, "bgp");
                }
            }))
            {
                IsBackground = true
            };
            MacroForm.t.Start();
        }
示例#4
0
 private void btnPlay_Click(object sender, EventArgs e)
 {
     MacroForm.PlayMacro(this.cmbMacros.SelectedValue.ToString());
 }
示例#5
0
 internal void btnStop_Click(object sender, EventArgs e)
 {
     MacroForm.AbortReroll();
 }