Что нового

[Мышь, клавиатура] MouseMove не работает, как выйти из ситуации?

Angelionix

Новичок
Добрый день. Необходимо перемещение мыши сделать по ряду точек с зажато левой кнопкой в окне программы. Столнулся с тем что MouseMove не работает, если в опциях поставить чтобы координаты считались абсолютные. мо мышка через раз движется, если поставить относительно требуемого окна или клиентской части то вообще мертво стоит. Попробовал через винапи двинуть ее тоже не двигается. Нужен совет как двигать мышку, программно
 

mef-t

Осваивающий
Сначала подробно опишите, где Вы ее двигаете?
На рабочем столе?, в блокноте, или в приложении?
Если приложение, то полноразмерное, или же оконный вариант?
Опять же, а допусимо ли вообще там движение мыши?
Права администратора указывали в скрипте?
Ваш код?
 
Автор
A

Angelionix

Новичок
Приложение оконное. Раз в 10 минут выскакивает попап окно в котором появляются несколько цифр, их надо соединить от самого меньшего к самому большему, мышью с зажатой ЛКМ, типа как рисование по точкам. Называется - CapMonsterDeMo. Самому мышкой двигать можно в окне. Так же попробовал Через UOPilot двигать мышь между несолькими точками. Когда активно окно с цифрами. то курсор не двигается.
Код:
#include "BmpSearch.au3"
#include <ScreenCapture.au3>
#Include <WinAPI.au3>
#include <Constants.au3>
_GDIPlus_Startup()
$win = 'Ограничение Demo-версии'
Global $numbers[2][4];
Global $j =0
WinWaitActive('Ограничение Demo-версии')
For $i = 1 To 9 Step +1

      $hSource = _ScreenCapture_CaptureWnd ('', WinGetHandle ($win))
      $hBmp = _GDIPlus_BitmapCreateFromFile(@ScriptDir&'\'&$i&'.bmp')

      $hFind = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBmp)
      ;ConsoleWrite ('5'&@CRLF)
      $aCoords = _BmpSearch($hSource, $hFind, 1)
         If @error Then
           ConsoleWrite("не найдено" & @CRLF)


         Else
         $x = $aCoords[1][2]
		 $y = $aCoords[1][3]
		 $numbers[0][$j] = $x
		 $numbers[1][$j] = $y
		 $j+=1
         ConsoleWrite('найдено ' & @CRLF)
EndIf
_WinAPI_DeleteObject($hSource)
    _WinAPI_DeleteObject($hFind)
 Next
$winPos = WinGetPos($win)

For $i = 0 To 3 Step +1
$xPoint = $winPos[0]+$numbers[0][$i]
$yPoint = $winPos[1]+$numbers[1][$i]
          ConsoleWrite('x= '&$xPoint & @CRLF)
         ConsoleWrite('y= '&$yPoint & @CRLF)
;_WinAPI_Mouse_Event(BitOR($MOUSEEVENTF_MOVE, $MOUSEEVENTF_ABSOLUTE) , $xPoint , $yPoint )
 MouseMove( $xPoint,$yPoint,0) ;$numbers[0][0], $numbers[0][1])
 MouseDown("left")
Next


 MouseUp("left")
 MsgBox(4096, "Done", "all dOne")


В коде есть лишнее. потому что пока в поиске. Сейчас хочу попробовать эмулировать перевижение курсора с помощью нажатий клавиш на нампаде.


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

МДас, Попробовал эмулировать через нажатие клавиш на цифровой клаве
Код:
Send("{NUMPAD2}")


При активном целевом окне - не пашет(


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

Вопрос решился. чето у меня autoit затупил. даже через админа не рисовало, но переустановка помогла
 
Верх