首页 > 解决方案 > C# 将密钥发送到应用程序

问题描述

public void Press(Keys key)
{
    WindowsAPI.PostMessage(this.Handle, 260u, new UIntPtr((uint)key), UIntPtr.Zero);
}

public void Release(Keys key)
{
    WindowsAPI.PostMessage(this.Handle, 261u, new UIntPtr((uint)key), UIntPtr.Zero);
}

public void gepardkey(Keys key)
{
    this.Press(key);
    Thread.Sleep(10);
    this.Release(key);
}

private void ragnarokgepard_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
    bool flag2 = this.currentHP / this.maxHP *100.0<Convert.ToDouble(this.numHPPercent);
    if (flag2)
    {
        this._windowsAPI.gepardkey(Keys.F1);
    }

    bool flag3 = this.currentSP / this.maxSP *100.0<Convert.ToDouble(this.numSPPercent);
    if (flag3)
    {
        this._windowsAPI.gepardkey(Keys.F2);
    }
}

我收到此错误http://prntscr.com/lsel0z有人可以帮助我吗?我已经使用了计时器,private void autopots()但这个错误仍然弹出

这位仙境传说私人服务器的培训师

标签: c#.net

解决方案


我不知道您如何定义 PostMessage API,但这里是我的定义:

const UInt32 WM_KEYDOWN = 0x0100;//256
const UInt32 WM_KEYDUP = 0x0101;//257
[DllImport("user32.dll")]
static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam);

以及 keydown 的语法,例如:(key is virtual key)

    WindowsAPI.PostMessage(this.Handle, WM_KEYDOWN, (int)key, 0);

您使用 260 作为 Keydown 的值,使用 261 作为 Keyup .....!!??


推荐阅读