C#全球鼠标钩子问题

时间:2017-09-08 12:28:04

标签: c#

我制作了C#全局鼠标钩子,它运行良好,我正在使用它作为自动点击器,当按下鼠标时自动点击。显然,我使用鼠标钩来制作它,但现在我的自动点击仅点击一次并停止。我想我知道为什么会这样,但我不知道如何修复它,但这里是代码:

private void OnMouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        label8.Text = "true";
        clicker.Enabled = true;
    }
}

private void OnMouseUp(object sender, MouseEventArgs e)
{
    label8.Text = "false";
    clicker.Enabled = false;
}

private void clicker_Tick(object sender, EventArgs e)
{ 
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
}

我认为发生的是:它检测到鼠标已关闭,并启用计时器。然后它运行clicker_Tick,这会使mouse_event模拟鼠标向下和鼠标向上,当鼠标启动时,mousehook会检测到它并执行:clicker.Enabled = false;

1 个答案:

答案 0 :(得分:1)

您的代码正在执行LEFTUP命令,该命令将触发OnMouseUp事件并最终停用代码。

因此,您应该使用另一个键来停止滚动条,例如用鼠标右键停止:

private void OnMouseUp(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Right)
    {
        label8.Text = "false";
        clicker.Enabled = false;
    }
}