如何在我的游戏训练师作弊程序中使用像CTRL + F1这样的热键乘数?

时间:2016-10-06 16:40:39

标签: c# hotkeys steam cheat-engine

在我现在正在做的任何事情中,我几乎没有被认为是知识渊博的,所以我很感激帮助......

我目前正在使用C#Steam游戏培训师,我希望能够在这里做的是将当前的热键设置替换为允许用户按下组合的设置多个按钮用于激活热键,而不是仅限于一个用于激活的键。

当我在我的培训师的下拉框中输入一个数字时出现问题,但是当我按下它时,数字键不会输入,因为这个热键设置仅限于它的特定功能教练员别的东西。我认为这可能与当前热键代码不允许任何按钮分配给除培训师指定的过程之外的任何其他工作的方式有关(?)

如果有可能,我将如何实施一个替代热键系统,该系统不会限制仅分配给该过程的按钮的使用,(我认为你可以' t在训练器以外的其他任何地方按1或2),我怎样才能使它成为一个乘法器,通过按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();

谢谢!

0 个答案:

没有答案