現在、最初にクリックしたときにマウス ボタンを押したままにし、ユーザーがマウス ボタンを 2 回押すまで押し続けるプログラムを作成しています。
このプログラムは、MouseHookListenerを使用して入力をグローバルに検出し、入力シミュレーターを使用して、押されたマウス ボタンを押したままにします。
プログラムは意図したとおりにマウスを押したままにすることができますが、押したままのボタンをシミュレートするようにプログラムに信号を送る元のマウス クリックに問題があります。それはまだ実行されます。MouseHookListener が低レベルのフックを使用して動作することは知っていますが、HookCallBack() メソッドは保護されているためオーバーライドできません。
元のマウス入力をブロックする方法はありますか? または、マウスがもう一度クリックされるまで元の入力を保持する方法はありますか?
これは、これまでに作成したコードです (注 - mListener は他のフォーラムでアクティブ化されています):
public MouseHold()
{
mListener = new MouseHookListener(new GlobalHooker());
mListener.MouseClick += mListener_MouseClick;
}
private bool isDown;
private int count = 0;
private InputSimulator sim = new InputSimulator();
public MouseHookListener mListener;
private void mListener_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
if (isDown)
{
isDown = false;
Console.Out.WriteLine(count);
}
else
{
Console.Out.WriteLine(count);
isDown = true;
sim.Mouse.LeftButtonDown();
}
}
}