Программное нажатие мыши - C#
Формулировка задачи:
Суть задачи: когда зажата левая кнопка мышки, на компьютере в этот момент должны эмулироваться нажатия мыши.
В связи с этим возникли вопросы.
1) Через что лучше перехватывать нажатия мыши ? Я пытаюсь через GetAsyncKeyState.
2) Функция GetAsyncKeyState определяет, является ли клавиша отпущенной или нажатой во время вызова функции и была ли клавиша нажата после предыдущего вызова GetAsyncKeyState. Т.е. эта функция возвращает -32767, если клавиша нажата или была нажата после предыдущего вызова, или ноль, если она отпущена. Я правильно понимаю ?
3) Если все это дело реализовывать через GetAsyncKeyState, то приходится через цикл что-то в духе этого:
Что очень сильно нагружает процессор. Может кто чего-нибудь подсказать по этим вопросам ?
while (true)
{
int j = GetAsyncKeyState(1);
if (j == -32767)
{
mouse_event((uint)MouseEventFlags.LEFTUP, 0, 0, 0, 0);
mouse_event((uint)MouseEventFlags.LEFTDOWN, 0, 0, 0, 0);
}
}Решение задачи: «Программное нажатие мыши»
textual
Листинг программы
[DllImport("User32.dll")]
private static extern short GetAsyncKeyState(System.Windows.Forms.Keys vKey);
//И проверка вот так
if (Convert.ToInt32(GetAsyncKeyState(Keys.Escape).ToString()) != 0)
tmr = -1;