Я использую следующую библиотеку: http://www.codeproject.com/Articles/28064/Global-Mouse-and-Keyboard-Library?fid=1518257&df=90&mpp=25&noise=3&prof=False&sort=Position&view=Quick&fr=51#xx0xxSetCursorPos Не Работающие
Чтобы помочь мне работать с крючками мыши низкого уровня в Windows 7. Я создать таймер для проверки последний раз событие мыши шаг был уволен, а если это длиннее, чем заданное время, я перемещаю мышь в верхний левый угол экрана, используя SetCursorPos (0,0)
Прежде чем перемещать мышь, я взял ее старые координаты и сохранил их. Поэтому, когда я получаю следующее событие MouseMove, я могу заменить мышь в ее исходном местоположении. Однако, после вызова SetCursorPos (oldPos.x, oldPos.y), мышь не перемещается.
Я уверен, что значения oldPos верны, однако курсор отказывается двигаться. Может ли это быть из-за библиотеки, которую я использую? Пожалуйста помоги.
[DllImport("user32.dll", SetLastError = true)]
public static extern bool SetCursorPos(int X, int Y);
[DllImport("user32.dll")]
public static extern bool GetCursorPos(out POINT lpPoint);
void mouseHook_MouseMove(object sender, MouseEventArgs e)
{
//If the mouse was not visible, move it back to it's original position
if (!mouseVisible)
{
mouseVisible = true;
SetCursorPos(cursorPosition.x, cursorPosition.y);
}
//Update the last moved time.
lastMoved = DateTime.Now;
}
private void hideMouse(object sender, EventArgs e)
{
if (mouseVisible && (DateTime.Now - lastMoved) > new TimeSpan(0, 0, 0, mouseControl.timeTrackBar.Value))
{
log.Debug("Hiding mouse.");
//Store the current mouse position.
GetCursorPos(out cursorPosition);
//Hide the mouse.
SetCursorPos(0, 0);
log.Debug("Moving cursor to 0,0");
mouseVisible = false;
}
Попробуйте ввести код. Например, как вы получаете координаты мыши? –
Добавлен код. :) Я использую WinAPI для большинства вещей, поэтому я не могу понять, почему он не работает, особенно если он работает, чтобы установить мышь в 0,0, и я прошел отладку и вижу это cursorPosition. x и cursorPosition.y на самом деле являются правильными значениями. ЭТО просто не трогается. –
Моя догадка есть. Возможно, он будет установлен, но напрямую перезаписан другим событием перемещения мыши, потому что вы на самом деле переместили мышь. Это событие запускается много, в зависимости от ОС и скорости мыши. Можете ли вы попытаться отобразить что-то еще, например, вместо точки и использовать позицию мыши, которую вы ожидаете использовать в качестве позиции этой точки? И проверьте возвращаемое значение или GetLastError. – dowhilefor