1

MouseWheel イベントを操作する NFS ジョイスティックを作成しています。私のメイン スレッドでは、生成された周波数でキーボード キーをパルスする 2 番目のスレッドを呼び出します。私の問題は、MouseWheel を上下に移動すると、この周波数が時間とともに動的に変化することですが、シミュレータ スレッドはこの変化に気付かないことです。これは私のコードの一部です:

int centro = 0;
static bool left;
static bool ismoving;
static int grado;
static int frec;

Thread simulator = new Thread(new ThreadStart(move));
public Form1()
{
    InitializeComponent();
}
static void mleft()
{
    KeyboardSimulator.KeyDown(Keys.G);
    Thread.Sleep(10);
    KeyboardSimulator.KeyUp(Keys.G);
}
static void mright()
{
    KeyboardSimulator.KeyDown(Keys.J);
    Thread.Sleep(10);
    KeyboardSimulator.KeyUp(Keys.J);
}
static void move()
{
    while (ismoving)
    {
        if (left)
        {
            mleft();
            Thread.Sleep(frec);
        }
        else
        {
            mright();
            Thread.Sleep(frec);
        }              
    }

}
void map()
{

    if (grado == 0)
    {
        ismoving = false;
        frec = 0;
    }
    else
    {
        int ut = 1000;//1seg
        left = grado > 0;
        grado = Math.Abs(grado);
        frec = ut / grado / 10;
        ismoving = true;
    }


}
private void Window_Closed_1(object sender, EventArgs e)
{
    simulator.Abort();
}
private void Form1_Load(object sender, EventArgs e)
{
    HookManager.MouseWheel += Window_MouseWheel_1;
    simulator = new Thread(new ThreadStart(move));
}
private void Window_MouseWheel_1(object sender, MouseEventArgs e)
{
    centro += e.Delta;
    grado = centro / 120;
    l1.Text = grado + "";
    map();
}
4

0 に答える 0