public KeySenderDemo()
    {
        Form    f  = new Form();
        TextBox tb = new TextBox();

        tb.Parent   = f;
        tb.Location = new Point(10, 10);
        tb.Size     = new Size(200, 16);
        f.Load     += (s, e) =>
        {
            tb.Focus();
            ks = new KeySender(tb.Handle, DefaultKeysToSend);
            ks.StartSendingKeys(1, 200);
        };
        f.Click += (s, e) =>
        {
            if (ks.Sending())
            {
                ks.StopSendingKeys();
            }
            else
            {
                tb.Focus();
                ks.StartSendingKeys(1, 200);
            }
        };
        Application.Run(f);
    }
示例#2
0
        private async void F5_OnClick(object sender, RoutedEventArgs e)
        {
            if (mana1.Text.Length == 0)
            {
                f5button.IsChecked = false;
                return;
            }

            keys1.IsEnabled = false;
            mana1.IsEnabled = false;

            logBox.AppendText("\nF5 started.");
            logBox.ScrollToEnd();
            _ksF5 = new KeySender();
            var proc = (TibiaProc)processCombo.SelectedValue;

            _ksF5isrunning = true;
            while (_ksF5isrunning)
            {
                if (MemoryReader.mana >= int.Parse(mana1.Text))
                {
                    await _ksF5.SendKey(proc.Process, int.Parse(keys1.SelectedValue.ToString()));
                }
                await Task.Delay(250);
            }
            //await _ksF5.SendKey(proc.Process, int.Parse(mana1.Text), double.Parse(classCombo.SelectedValue.ToString()), double.Parse(itemCombo.SelectedValue.ToString()), int.Parse(keys1.SelectedValue.ToString()), logBox, 1);
        }
示例#3
0
        private async void Logout()
        {
            if (_logoutIsRunning)
            {
                _logoutIsRunning      = false;
                _logoutKeysender.Stop = true;
                return;
            }
            _logoutKeysender = new KeySender();
            _logoutIsRunning = true;
            while (_logoutIsRunning)
            {
                if (IsLogoutTimeChecked)
                {
                    await Task.Delay(LogoutTime * 1000 + new Random().Next(10, 200));

                    await _logoutKeysender.SendKey(TibiaProcess.Process, LogoutKey, 1);

                    if (_isLogoutHibernateChecked)
                    {
                        var psi = new ProcessStartInfo("shutdown", "/s /t 0");
                        psi.CreateNoWindow  = true;
                        psi.UseShellExecute = false;
                        Process.Start(psi);
                    }
                    if (IsLogoutHibernateChecked)
                    {
                        var psi = new ProcessStartInfo("shutdown", "/h /t 0");
                        psi.CreateNoWindow  = true;
                        psi.UseShellExecute = false;
                        Process.Start(psi);
                    }
                }
                if (IsLogoutSoulsChecked)
                {
                    if (MemoryReader.souls >= LogoutTime)
                    {
                        await Task.Delay(new Random().Next(10, 200));

                        await _logoutKeysender.SendKey(TibiaProcess.Process, LogoutKey, 1);

                        if (_isLogoutHibernateChecked)
                        {
                            var psi = new ProcessStartInfo("shutdown", "/s /t 0");
                            psi.CreateNoWindow  = true;
                            psi.UseShellExecute = false;
                            Process.Start(psi);
                        }
                        if (IsLogoutHibernateChecked)
                        {
                            var psi = new ProcessStartInfo("shutdown", "/h /t 0");
                            psi.CreateNoWindow  = true;
                            psi.UseShellExecute = false;
                            Process.Start(psi);
                        }
                    }
                }
            }
        }
 public void Stop()
 {
     if (ks != null)
     {
         ks.StopSendingKeys();
     }
     ks = null;
 }
示例#5
0
 public ProtocolKeyAttribute(string name, string defaultValue, KeyUsagePhase phase, KeySender sender, KeyType type)
 {
     _name    = name;
     _default = defaultValue;
     _phase   = phase;
     _sender  = sender;
     _type    = type;
 }
 public ProtocolKeyAttribute(string name, string defaultValue, KeyUsagePhase phase, KeySender sender, KeyType type)
 {
     _name = name;
     _default = defaultValue;
     _phase = phase;
     _sender = sender;
     _type = type;
 }
示例#7
0
 public ProtocolKeyAttribute(string name, string defaultValue, KeyUsagePhase phase, KeySender sender, KeyType type)
 {
     Name         = name;
     DefaultValue = defaultValue;
     Phase        = phase;
     Sender       = sender;
     Type         = type;
 }
示例#8
0
        //todo: logout after X time, shutdown pc
        private async void LogoutButton_OnClick(object sender, RoutedEventArgs e)
        {
            if (logout.Text.Length == 0 || LogoutSoulsRadioButton.IsChecked == false && LogoutSoulsRadioButton.IsChecked == false)
            {
                logoutButton.IsChecked = false;
                return;
            }

            logout.IsEnabled = false;

            logBox.AppendText("\nLogout started.");
            logBox.ScrollToEnd();
            var proc = (TibiaProc)processCombo.SelectedValue;

            if (LogoutTimeRadioButton.IsChecked == true)
            {
                _ksLogoutTime = new KeySender();
                await _ksLogoutTime.SendKeyMultiple(proc.Process, int.Parse(logout.Text), 1, 0, int.Parse(keys4.SelectedValue.ToString()), logBox);

                if (LogoutShutdownRadioButton.IsChecked == true)
                {
                    var psi = new ProcessStartInfo("shutdown", "/s /t 0");
                    psi.CreateNoWindow  = true;
                    psi.UseShellExecute = false;
                    Process.Start(psi);
                }

                if (LogoutHibernateRadioButton.IsChecked == true)
                {
                    var psi = new ProcessStartInfo("shutdown", "/h /t 0");
                    psi.CreateNoWindow  = true;
                    psi.UseShellExecute = false;
                    Process.Start(psi);
                }
            }
            if (LogoutSoulsRadioButton.IsChecked == true && MemoryReader.souls <= int.Parse(logout.Text))
            {
                _ksLogoutSouls = new KeySender();
                await _ksLogoutSouls.SendKey(proc.Process, int.Parse(keys4.SelectedValue.ToString()));

                if (LogoutShutdownRadioButton.IsChecked == true)
                {
                    var psi = new ProcessStartInfo("shutdown", "/s /t 0");
                    psi.CreateNoWindow  = true;
                    psi.UseShellExecute = false;
                    Process.Start(psi);
                }

                if (LogoutHibernateRadioButton.IsChecked == true)
                {
                    var psi = new ProcessStartInfo("shutdown", "/h /t 0");
                    psi.CreateNoWindow  = true;
                    psi.UseShellExecute = false;
                    Process.Start(psi);
                }
            }
        }
示例#9
0
 public override void Do()
 {
     if (CustomPos)
     {
         KeySender.MouseRelease(Button, ClickPos);
     }
     else
     {
         KeySender.MouseRelease(Button);
     }
 }
示例#10
0
        /// <summary>
        /// Handles "key:" requests
        /// </summary>
        /// <param name="data">Message received from client</param>
        public void OnKeyRequest(string data)
        {
            string key = data.Substring("key:".Length);

            Program.Log("Key request: " + key, debug: true);

            try
            {
                KeySender.SendKey(ScancodeConvert.GetScancode(key));
            }
            catch
            {
                Program.Log("Failed to send key: " + key, ConsoleColor.Red);
            }
        }
示例#11
0
        private async void Skilling()
        {
            if (_skillingIsRunning)
            {
                _skillingIsRunning      = false;
                _skillingKeysender.Stop = true;
                return;
            }
            _skillingKeysender = new KeySender();
            _skillingIsRunning = true;
            while (_skillingIsRunning)
            {
                await _skillingKeysender.SendKey(TibiaProcess.Process, SkillingKey, 2);

                await Task.Delay(SkillingTime * 1000 + new Random().Next(10, 200));
            }
        }
示例#12
0
 private async void Manaburn()
 {
     if (_manaburnIsRunning)
     {
         _manaburnIsRunning = false;
         return;
     }
     _manaburnKeysender = new KeySender();
     _manaburnIsRunning = true;
     while (_manaburnIsRunning)
     {
         if (MemoryReader.mana >= RequiredMana)
         {
             await _manaburnKeysender.SendKey(TibiaProcess.Process, ManaburnKey, 1);
         }
         await Task.Delay(250);
     }
 }
示例#13
0
        private async void F6_OnClick(object sender, RoutedEventArgs e)
        {
            if (mana2.Text.Length == 0)
            {
                f6button.IsChecked = false;
                return;
            }


            keys2.IsEnabled = false;
            mana2.IsEnabled = false;

            logBox.AppendText("\nF6 started.");
            logBox.ScrollToEnd();
            _ksF6 = new KeySender();
            var proc = (TibiaProc)processCombo.SelectedValue;
            await _ksF6.SendKey(proc.Process, int.Parse(mana2.Text), 1, 0, int.Parse(keys2.SelectedValue.ToString()), logBox, 1);
        }
示例#14
0
        private async void SpaceButtonBase_OnClick(object sender, RoutedEventArgs e)
        {
            if (spacebox.Text.Length == 0)
            {
                spacebutton.IsChecked = false;
                return;
            }


            keys3.IsEnabled    = false;
            spacebox.IsEnabled = false;

            logBox.AppendText("\nSpace started.");
            logBox.ScrollToEnd();
            _ksSpace = new KeySender();
            var proc = (TibiaProc)processCombo.SelectedValue;
            await _ksSpace.SendKey(proc.Process, int.Parse(spacebox.Text), 1, 0, int.Parse(keys3.SelectedValue.ToString()), logBox, 2);
        }
示例#15
0
        public override void Do()
        {
            string previous_clipboard = Clipboard.GetText();

            Clipboard.SetText(topaste);
            System.Threading.Thread.Sleep(50);
            KeySender.KeyPress(KeyConverter.Name2Key(KeyConverter.WinFormKey2Name(Keys.LControlKey)));
            KeySender.KeyStroke(KeyConverter.Name2Key(KeyConverter.WinFormKey2Name(Keys.V)));
            KeySender.KeyRelease(KeyConverter.Name2Key(KeyConverter.WinFormKey2Name(Keys.LControlKey)));
            System.Threading.Thread.Sleep(50);
            try
            {
                Clipboard.SetText(previous_clipboard);
            }
            catch
            {
                try
                {
                    Clipboard.SetText("");
                }
                catch { }
            }
        }
示例#16
0
        /// <summary>
        /// Handles "action:" requests.
        /// Similar to key requests except the actual keycode is loaded from a file based on the action name passed.
        /// </summary>
        /// <param name="data"></param>
        public void OnActionRequest(string data)
        {
            string action = data.Substring("action:".Length);

            Program.Log("Action request: " + action, debug: true);

            string keycode = Program.keybindingHelper.GetKeybind(action);

            if (keycode != null)
            {
                try
                {
                    KeySender.SendKey(ScancodeConvert.GetScancode(keycode));
                }
                catch
                {
                    Program.Log("Failed to send key: " + keycode, ConsoleColor.Red);
                }
            }
            else
            {
                Program.Log("Attempt to trigger action that doesn't have an associated keybind! (" + action + ")", ConsoleColor.Red);
            }
        }
示例#17
0
        public FormMain()
        {
            if (!WindowManager.IsSingleInstance)
            {
                MessageBox.Show(Translations.Get("already_running"));
                Environment.Exit(0);
            }

            PressedKeys = new List <Keys>();
            InitializeComponent();
            HideMainForm();

            this.Text            = Translations.Get("about_text");
            this.Item_Title.Text = Translations.Get("about_title");

            Input              = new GlobalHooker();
            KInput             = new KeyboardHookListener(Input);
            MInput             = new MouseHookListener(Input);
            KInput.Enabled     = true; MInput.Enabled = true;
            MInput.MouseDown  += new MouseEventHandler(OnUserMouseInteraction);
            MInput.MouseUp    += new MouseEventHandler(OnUserMouseInteraction);
            MInput.MouseMove  += new MouseEventHandler(OnUserMouseInteraction);
            MInput.MouseClick += new MouseEventHandler(OnUserMouseClick);
            KInput.KeyDown    += new KeyEventHandler(OnUserKeyboardPress);
            KInput.KeyUp      += new KeyEventHandler(OnUserKeyboardRelease);
            KeySender.KeyStroke(KeySender.VkKeyScan('^'));

            if (File.Exists(SettingsFile.SaveFile))
            {
                SettingsFile.Load(ref ActivateKey);
            }
            else
            {
                SettingsFile.Save(ActivateKey);
                if (MessageBox.Show(
                        String.Format(
                            "{0}\n\n{1}\n{2}\n\n{3}",
                            Translations.Get("welcome_text_1"),
                            Translations.Get("welcome_text_2"),
                            Translations.Get("welcome_text_3"),
                            Translations.Get("welcome_text_4")
                            ),
                        Translations.Get("welcome_title"),
                        MessageBoxButtons.YesNo,
                        MessageBoxIcon.Question
                        ) == DialogResult.Yes)
                {
                    Button_Help_Click(new object(), EventArgs.Empty);
                }
            }

            RefreshFiles();

            WqlEventQuery query = new WqlEventQuery("Select * From __InstanceCreationEvent Within 2 Where TargetInstance Isa 'Win32_Process'");

            watcher = new ManagementEventWatcher(query);
            watcher.EventArrived += new EventArrivedEventHandler(OnWindowOpen);
            watcher.Start();

            ProceedOtherMacros(Keys.None, MacroType.Startup);

            timer          = new System.Windows.Forms.Timer();
            timer.Interval = 1000;
            timer.Tick    += new EventHandler(OnIDLETick);
            timer.Start();
        }
 public override void Do()
 {
     KeySender.KeyRelease(Key);
 }
示例#19
0
 public override void Do()
 {
     KeySender.KeyStroke(Key);
 }
示例#20
0
        private void OnUserKeyboardPress(object sender, KeyEventArgs e)
        {
            idletime = 0;
            if ((int)e.KeyCode == ActivateKey)
            {
                MacroActivate = true;
                if (testing)
                {
                    string name = WindowManager.GetActiveWindowTitle();
                    string exe  = WindowManager.GetActiveWindowExename();
                    TopMostMessageBox.Show(
                        String.Format(Translations.Get("window_info_result_text"), name, exe),
                        Translations.Get("window_info_result_title"));
                    testing = false;
                }
            }

            switch (e.KeyCode)
            {
            case System.Windows.Forms.Keys.LShiftKey:
            case System.Windows.Forms.Keys.RShiftKey:
            case System.Windows.Forms.Keys.Shift:
            case System.Windows.Forms.Keys.ShiftKey:
                shift = true;
                break;
            }

            while (PressedKeys.Contains(e.KeyCode))
            {
                PressedKeys.Remove(e.KeyCode);
            }

            PressedKeys.Add(e.KeyCode);

            if (KeyHelper.Form_Visible)
            {
                KeyHelper.BoxContent += KeyConverter.WinFormKey2Name(e.KeyCode) + "\n";
                e.Handled             = true;
            }
            else if (ProceedRewriteMacros(e.KeyCode))
            {
                e.Handled = true;
            }

            //Handle french ^ and ¨ key modifiers: êâôëü
            if ((int)e.KeyCode == 221 && !circumflex)
            {
                circumflex = true;
                e.Handled  = true;
                if (shift)
                {
                    diaeresis = true;
                }
            }
            else if (circumflex && !circumflexOn)
            {
                circumflexOn = true;
                switch (e.KeyCode)
                {
                case (System.Windows.Forms.Keys) 221:
                    circumflex = false;
                    diaeresis  = false;
                    if (diaeresis)
                    {
                        KeySender.KeyPress(KeyConverter.Name2Key("Shift"));
                        KeySender.KeyStroke(KeySender.VkKeyScan('^'));
                        KeySender.KeyStroke(KeySender.VkKeyScan('^'));
                        KeySender.KeyRelease(KeyConverter.Name2Key("Shift"));
                    }
                    else
                    {
                        KeySender.KeyStroke(KeySender.VkKeyScan('^'));
                        KeySender.KeyStroke(KeySender.VkKeyScan('^'));
                    }
                    break;

                case System.Windows.Forms.Keys.A:
                case System.Windows.Forms.Keys.E:
                case System.Windows.Forms.Keys.I:
                case System.Windows.Forms.Keys.O:
                case System.Windows.Forms.Keys.U:
                case System.Windows.Forms.Keys.Y:
                    if (diaeresis)
                    {
                        KeySender.KeyPress(KeyConverter.Name2Key("Shift"));
                        KeySender.KeyStroke(KeySender.VkKeyScan('^'));
                        KeySender.KeyRelease(KeyConverter.Name2Key("Shift"));
                    }
                    else
                    {
                        KeySender.KeyStroke(KeySender.VkKeyScan('^'));
                    }
                    circumflex = false;
                    diaeresis  = false;
                    break;

                default:
                    circumflex = false;
                    diaeresis  = false;
                    break;
                }
                circumflexOn = false;
            }
        }
 public override void Do()
 {
     KeySender.KeyPress(Key);
 }
        private async void ToggleSwitch_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            if (!this.SpotifySwitch.Toggled)
            {
                this._cancellationGetSpotifyUpdates?.Cancel();
                Program.TrayMenu.NpcWorkTrayCheckBox.Checked = false;
                return;
            }

            //if (AppInfo.State.WindowName == string.Empty)
            //{
            //    this.SpotifySwitch.TurnOff();
            //    MessageBox.Show("make game window active at least once");
            //    return;
            //}

            if (!SourceKeysExtensions.SourceEngineAllowedKeys.Contains(this.TextBoxKeyBind.CurrentText))
            {
                this.SpotifySwitch.TurnOff();
                MessageBox.Show("there is no such button in source engine");
                return;
            }

            TextBoxToConsole.Text = $"bind \"{this.TextBoxKeyBind.CurrentText}\" \"exec audio.cfg\"";

            this.ButtonDo_Click(this, null); // force first request to not wait for the Thread.Sleep(1000)

            int _SelectedAccount = GetSelectedAccountIndex();

            this._cancellationGetSpotifyUpdates = new CancellationTokenSource();

            var cfgWriter = new ConfigWriter(
                $@"{SteamIdLooker.UserdataPath}\{this.GetSelectedAccountId().ToString()}\730\local\cfg\audio.cfg",
                this.NowPlayingConfig.Config.CfgText);

            await Task.Factory.StartNew(() =>
            {
                while (true)
                {
                    if (SelectionChanged(_SelectedAccount))
                    {
                        this.Dispatcher.Invoke(() => OnAccountsListSelectionChanged());
                    }

                    Thread.Sleep(1000);

                    if (AppInfo.State.TokenExpireTime < DateTime.Now)
                    {
                        var refreshedTokenResp = _spotify.GetRefreshedToken(AppInfo.State.SpotifyRefreshToken);
                        AppInfo.State.UpdateToken(refreshedTokenResp);
                        cfgWriter.RewriteKeyBinding("say \"spotify token expired!\"");
                    }

                    var trackResp = _spotify.GetCurrentTrack(AppInfo.State.SpotifyAccessToken);

                    if (trackResp != null && trackResp.Id != this.PlayingTrackId)
                    {
                        cfgWriter.RewriteKeyBinding(trackResp);

                        if (trackResp.FormattedArtists.Length > 27)
                        {
                            Dispatcher.Invoke(() => LabelArtistAnimation());
                        }
                        else
                        {
                            Dispatcher.Invoke(() => LabelArtist.BeginAnimation(Canvas.RightProperty, null));
                        }

                        if (IsAutoTrackChangeEnabled && Program.GameProcess.IsValid)
                        {
                            KeySender.SendInputWithAPI(CurrentKeyBind);
                        }
                    }

                    this.Dispatcher.Invoke(() => this.UpdateInterfaceTrackInfo(trackResp));

                    if (this._cancellationGetSpotifyUpdates.IsCancellationRequested)
                    {
                        return;
                    }
                }
            });
        }