Что нового

[Мышь, клавиатура] Возврат мыши на её координаты

SNAK

SNAK
Сообщения
59
Репутация
0
Здравствуйте, возник такой вопрос
Не могу сделать так что бы если после нажатия левой кнопки мыши её координаты поменялись то мышь вернулась бы на нах обратно ,но при повторном сдвиге мышь не возвратило .

Код:
;.......
;..........
;........
;..........
;.......
MouseClick("left")
;Если мышь поменяла координаты вернуть ее обратно 
;Если не меняла то нечего не делать
;..........
;..........
;........
;..........
;.......
;..........
;........
;..........
;.......
MouseClick("left")
;Если мышь поменяла координаты вернуть ее обратно 
;Если не меняла то нечего не делать
;..... 
;и тд

Заранее спасибо :3
 
A

Alofa

Гость
Ничего не понял :-\
Опишите конкретную ситуацию.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
;Если мышь поменяла координаты вернуть ее обратно
;Если не меняла то нечего не делать

Дальше жмём Alt+Ctrl+Del, потому как мышь мы уже не сдвинем!
Следовательно возникнет вопрос, как заблокировать эти кнопки, я правильно понял? :smile:


Добавлено:
Сообщение автоматически объединено:

SNAK [?]
если после нажатия левой кнопки мыши её координаты поменялись то мышь вернулась бы на нах обратно ,но при повторном сдвиге мышь не возвратило
Код:
_MouseClick("left", @DesktopWidth / 2, @DesktopHeight / 2)

Func _MouseClick($s_Button, $X, $Y)

   $i_Trigger = 0

   MouseClick($s_Button, $X, $Y)

   Do
	  $a_Pos = MouseGetPos()
	  If $a_Pos[0] <> $X Or $a_Pos[1] <> $Y Then
		 ; ConsoleWrite(StringFormat("! Mouse retun: %d x %d\n", $X, $Y))
		 MouseMove($X, $Y)
		 $i_Trigger += 1
	  Else
		 If $i_Trigger Then $i_Trigger = -1
	  EndIf

	  Sleep(10)
   Until $i_Trigger = - 1

   Return 1
EndFunc ;==>_MouseClick
 
Автор
SNAK

SNAK

SNAK
Сообщения
59
Репутация
0
Garrett сказал(а):
;Если мышь поменяла координаты вернуть ее обратно
;Если не меняла то нечего не делать

Дальше жмём Alt+Ctrl+Del, потому как мышь мы уже не сдвинем!
Следовательно возникнет вопрос, как заблокировать эти кнопки, я правильно понял? :smile:


Добавлено:
Сообщение автоматически объединено:

SNAK [?]
если после нажатия левой кнопки мыши её координаты поменялись то мышь вернулась бы на нах обратно ,но при повторном сдвиге мышь не возвратило
Код:
_MouseClick("left", @DesktopWidth / 2, @DesktopHeight / 2)

Func _MouseClick($s_Button, $X, $Y)

   $i_Trigger = 0

   MouseClick($s_Button, $X, $Y)

   Do
	  $a_Pos = MouseGetPos()
	  If $a_Pos[0] <> $X Or $a_Pos[1] <> $Y Then
		 ; ConsoleWrite(StringFormat("! Mouse retun: %d x %d\n", $X, $Y))
		 MouseMove($X, $Y)
		 $i_Trigger += 1
	  Else
		 If $i_Trigger Then $i_Trigger = -1
	  EndIf

	  Sleep(10)
   Until $i_Trigger = - 1

   Return 1
EndFunc ;==>_MouseClick



я имел ввиду то что потом её можно сдвинуть . Пример мы её сдвинули она вернулась обратно ,но потом мы сможем её сдвинуть без возврата на координаты


Добавлено:
Сообщение автоматически объединено:

Garrett сказал(а):
;Если мышь поменяла координаты вернуть ее обратно
;Если не меняла то нечего не делать

Дальше жмём Alt+Ctrl+Del, потому как мышь мы уже не сдвинем!
Следовательно возникнет вопрос, как заблокировать эти кнопки, я правильно понял? :smile:


Добавлено:
Сообщение автоматически объединено:

SNAK [?]
если после нажатия левой кнопки мыши её координаты поменялись то мышь вернулась бы на нах обратно ,но при повторном сдвиге мышь не возвратило
Код:
_MouseClick("left", @DesktopWidth / 2, @DesktopHeight / 2)

Func _MouseClick($s_Button, $X, $Y)

   $i_Trigger = 0

   MouseClick($s_Button, $X, $Y)

   Do
	  $a_Pos = MouseGetPos()
	  If $a_Pos[0] <> $X Or $a_Pos[1] <> $Y Then
		 ; ConsoleWrite(StringFormat("! Mouse retun: %d x %d\n", $X, $Y))
		 MouseMove($X, $Y)
		 $i_Trigger += 1
	  Else
		 If $i_Trigger Then $i_Trigger = -1
	  EndIf

	  Sleep(10)
   Until $i_Trigger = - 1

   Return 1
EndFunc ;==>_MouseClick



И да пост делал ночью и забыл указать то что все эти действия происходят в окне ,а изменять координаты мы может только
Код:
_WinAPI_Mouse_Event($MOUSEEVENTF_MOVE, 0, 0);MouseMove не подходит
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
SNAK
Так?
Код:
#include <WinAPI.au3>
$Coord = MouseGetPos()
MouseClick("left", 100, 200)
$x = $Coord[0] * 65535 / @DesktopWidth
$y = $Coord[1] * 65535 / @DesktopHeight
_WinAPI_Mouse_Event(BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_MOVE), $x, $y)
 
Автор
SNAK

SNAK

SNAK
Сообщения
59
Репутация
0
InnI сказал(а):
SNAK
Так?
Код:
#include <WinAPI.au3>
$Coord = MouseGetPos()
MouseClick("left", 100, 200)
$x = $Coord[0] * 65535 / @DesktopWidth
$y = $Coord[1] * 65535 / @DesktopHeight
_WinAPI_Mouse_Event(BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_MOVE), $x, $y)
Alofa сказал(а):
Ничего не понял :-\
Опишите конкретную ситуацию.
Точка это мышь и когда она уходит за пределы объекта должна туда вернутся ,а потом может двигаться дальше
 

Вложения

  • анимация-для-форума.gif
    анимация-для-форума.gif
    5 КБ · Просмотры: 8

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
SNAK

Предупреждение За нарушение общих правил (пункт В.2):
Старайтесь избегать “Over quoting” (преувеличенное цитирование) - цитируйте только необходимую часть сообщения, которая наилучшим образом подчеркнёт суть цитируемого.


С уважением, ваш Глобальный модератор.






Добавлено:
Сообщение автоматически объединено:

SNAK [?]
Нет, это точка.
Компьютерная мышь - это манипулятор для управления курсором.
Кто управляет курсором, вы (с помощью манипулятора) или скрипт имитирует ваши действие?

уходит за пределы объекта
Объект (в программировании) - некоторая сущность в виртуальном пространстве, которая имеет свойства и методы.
Что у вас подразумевается по словом объект? Окно программы, область в 2D или 3D пространстве и т.д.?

должна туда вернутся
Кем, чем?

потом может двигаться дальше
Куда, зачем?

И т.д., и т.п.

IMHO, примерно так работает мозг форумчан которые пытаются вам помочь!
Попробуйте сформулировать свою задачу более грамотно.
 
Автор
SNAK

SNAK

SNAK
Сообщения
59
Репутация
0
Garrett сказал(а):
SNAK
Нет, это точка.
Компьютерная мышь - это манипулятор для управления курсором.
Кто управляет курсором, вы (с помощью манипулятора) или скрипт имитирует ваши действие?

уходит за пределы объекта
Объект (в программировании) - некоторая сущность в виртуальном пространстве, которая имеет свойства и методы.
Что у вас подразумевается по словом объект? Окно программы, область в 2D или 3D пространстве и т.д.?

должна туда вернутся
Кем, чем?

потом может двигаться дальше
Куда, зачем?

И т.д., и т.п.
Так.... ладно..

Окно программы, область в 2D или 3D пространстве и т.д.?
1. Окно с 3D игрой

Объект (в программировании) - некоторая сущность в виртуальном пространстве, которая имеет свойства и методы.
Что у вас подразумевается по словом объект?
2. Объект это персонаж

Кто управляет курсором, вы (с помощью манипулятора) или скрипт имитирует ваши действие?
3. Я с помощью манипулятора

4. Вернуть должен курсор эмуляцией движения ( "скрипт имитирует ваши действие" )

потом может двигаться дальше
Куда, зачем?
5. Куда угодно , что бы можно было играть.
6. Можно использовать любые функции кроме
Код:
;MouseMove не подходит
;к примеру 
_WinAPI_Mouse_Event($MOUSEEVENTF_MOVE, 0, 0)
как то так


Добавлено:
Сообщение автоматически объединено:

Garrett сказал(а):
;Если мышь поменяла координаты вернуть ее обратно
;Если не меняла то нечего не делать

Дальше жмём Alt+Ctrl+Del, потому как мышь мы уже не сдвинем!
Следовательно возникнет вопрос, как заблокировать эти кнопки, я правильно понял? :smile:


Добавлено:
Сообщение автоматически объединено:

SNAK [?]
если после нажатия левой кнопки мыши её координаты поменялись то мышь вернулась бы на нах обратно ,но при повторном сдвиге мышь не возвратило
Код:
_MouseClick("left", @DesktopWidth / 2, @DesktopHeight / 2)

Func _MouseClick($s_Button, $X, $Y)

   $i_Trigger = 0

   MouseClick($s_Button, $X, $Y)

   Do
	  $a_Pos = MouseGetPos()
	  If $a_Pos[0] <> $X Or $a_Pos[1] <> $Y Then
		 ; ConsoleWrite(StringFormat("! Mouse retun: %d x %d\n", $X, $Y))
		 MouseMove($X, $Y)
		 $i_Trigger += 1
	  Else
		 If $i_Trigger Then $i_Trigger = -1
	  EndIf

	  Sleep(10)
   Until $i_Trigger = - 1

   Return 1
EndFunc ;==>_MouseClick



В прицепи это почти то что мне надо ,но
Код:
MouseMove($X, $Y);не подходит
и нажатие должно быть в любых координатах + нужен тайминг работы этой функции типо секунды 2 он удерживает курсор ,а потом можно его двигать как хочешь
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
SNAK
Вы предупреждение читали?
 
A

Alofa

Гость
SNAK сказал(а):
... я не знаю как ещё можно было вписать цитату
Цитата это:
[quote] текст между двумя этими тэгами, который можно сокращащать [/quote].
 
Автор
SNAK

SNAK

SNAK
Сообщения
59
Репутация
0
Alofa сказал(а):
SNAK сказал(а):
... я не знаю как ещё можно было вписать цитату
Цитата это:
[quote] текст между двумя этими тэгами, который можно сокращащать [/quote].
так за такие двойные мне и дали предупреждение
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
SNAK [?]
как ещё можно было вписать цитату
Выделите желаемое зажав ЛКМ. Отпустив ЛКМ в конце выделения под курсором появится надпись "Цитировать", нажмите на неё.
 
Автор
SNAK

SNAK

SNAK
Сообщения
59
Репутация
0
Garrett сказал(а):
SNAK [?]
как ещё можно было вписать цитату
Выделите желаемое зажав ЛКМ. Отпустив ЛКМ в конце выделения под курсором появится надпись "Цитировать", нажмите на неё.
ладно ,что на счёт вопроса можете помочь ?
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
SNAK
Код:
#include <WinAPI.au3>

_MouseClickDelay(100, 200)

Func _MouseClickDelay($X, $Y, $iTime = 2000)
  MouseClick("left", $X, $Y)
  Local $X_ = $X * 65535 / @DesktopWidth
  Local $Y_ = $Y * 65535 / @DesktopHeight
  Local $iStart = TimerInit()
  Do
    _WinAPI_Mouse_Event(BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_MOVE), $X_, $Y_)
    Sleep(10)
  Until TimerDiff($iStart) > $iTime
EndFunc
 
Автор
SNAK

SNAK

SNAK
Сообщения
59
Репутация
0
InnI сказал(а):
SNAK
Код:
#include <WinAPI.au3>

_MouseClickDelay(100, 200)

Func _MouseClickDelay($X, $Y, $iTime = 2000)
  MouseClick("left", $X, $Y)
  Local $X_ = $X * 65535 / @DesktopWidth
  Local $Y_ = $Y * 65535 / @DesktopHeight
  Local $iStart = TimerInit()
  Do
    _WinAPI_Mouse_Event(BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_MOVE), $X_, $Y_)
    Sleep(10)
  Until TimerDiff($iStart) > $iTime
EndFunc
в игре его уносит не пойми куда
 
Верх