Как использовать множитель горячих клавиш, например CTRL F1, в моей читерской программе Game trainer?

#c# #hotkeys #steam #cheat-engine

#c# #горячие клавиши #Steam #чит-движок

Вопрос:

Я едва ли на грани того, чтобы меня считали знающим во всем, что я делаю прямо сейчас, поэтому я ценю помощь…

В настоящее время я работаю над C # Steam game trainer прямо сейчас, и то, что я хотел бы сделать здесь, это заменить текущую настройку горячих клавиш на ту, которая позволит пользователю нажимать комбинацию из нескольких кнопок для активации горячей клавиши, вместо того, чтобы ограничиваться одной клавишейдля активации.

У меня возникает проблема, когда я захожу, чтобы ввести число в раскрывающемся списке в моем трейнере, но цифровая клавиша не вводится, когда я ее нажимаю, из-за этой настройки горячих клавиш, ограничивающей ее только определенной функцией чего-то еще в трейнере. Я думаю, что это может быть связано с тем, что текущий код горячих клавиш не позволяет какой-либо кнопке, назначенной для работы с чем-либо еще, кроме процесса, указанного в трейнере (?)

Если это возможно, как бы я мог реализовать альтернативную систему горячих клавиш, которая не ограничивает использование кнопок, назначенных только процессу (под этим я подразумеваю, что вы не можете нажимать 1 или 2 ни в чем другом, кроме trainer, когда он включен), и как бы я могкак сделать его множителем, который работает, нажимая комбинацию из 2 клавиш вместо 1, например CTRL F1, ALT 1, SHIFT F1? Вот код для трейнера, над которым я работаю:

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Threading;
using Memory;

namespace DBXVTrainerProject
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    [DllImport("user32.dll")]
    public static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vlc);

    public Mem MemLib = new Mem();

    public bool loaded;

    public object AllEn99_Checked { get; private set; }

    private void openGame()
    {
        if (loaded)
            return;

        //new memory.dll 1.0.2 function
        int gameProcId = MemLib.getProcIDFromName("DBXV");

        if (gameProcId != 0)
        {
            loaded = true;
            ProcessID.Text = ("Found!");
            MemLib.OpenGameProcess(gameProcId);

            int Badge = MemLib.readInt("base 0x01F43372,4ef5");

            if (Badge == 1)
                Badge_checkbox.Checked = true;
            else
                Badge_checkbox.Checked = false;
        }
    }

    protected override void WndProc(ref Message m) //hotbuttons
    {
        if (m.Msg == 0x0312)
        {
            int id = m.WParam.ToInt32();
            if (id == 1)
            {
                MemLib.writeMemory("base 01A47e4,2c,44,e,4c,c3", "int", "17");
            }
            { 
                if (id == 2)
                    MemLib.writeMemory("base 01A47e4,2c,44,e,4c,c3", "int", "22");
            }

        }
        base.WndProc(ref m);
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        RegisterHotKey(this.Handle, 1, 0, (int)Keys.D1);
        RegisterHotKey(this.Handle, 2, 0, (int)Keys.D2);


        if (backgroundWorker1.IsBusy == false)
            backgroundWorker1.RunWorkerAsync();
    }

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        while (true) //infinite loop
        {
            openGame();
  

Спасибо!