Что нового

Кликнуть в определенном окне ( не ControlClick )

malish-ka

Новичок
Сообщения
11
Репутация
0
Здравствуйте, у меня возникла еще одно проблема.
Мне нужно найти определенное окно получить его ширину и высоту, потом кликнуть по указанным координатам в этой ширине и высоте..как то так )
P.S НЕ ControlClick
 

Moonsin

Новичок
Сообщения
17
Репутация
2
malish-ka [?]
Здравствуйте, у меня возникла еще одно проблема.Мне нужно найти определенное окно получить его ширину и высоту, потом кликнуть по указанным координатам в этой ширине и высоте..как то так )P.S НЕ ControlClick
А чем ControlClick не устраивает?
Можно сделать так
Код:
Opt("MouseCoordMode", 0)
MouseClick ( "", $x, $y)

Получение размеров окна
Код:
$aSize = WinGetPos( "title")
$iHeight = $aSize[3]
$iWidth = $aSize[2]
 
Автор
M

malish-ka

Новичок
Сообщения
11
Репутация
0
Moonsin сказал(а):
А чем ControlClick не устраивает?
Потому что MouseClick двигает курсор...
Можно сделать так
Код:
Opt("MouseCoordMode", 0)
MouseClick ( "", $x, $y)


Получение размеров окна
Код:
$aSize = WinGetPos( "title")
$iHeight = $aSize[3]
$iWidth = $aSize[2]
Да то я знаю !
Как отправить клик именно в $aSize[3] и $aSize[2] ?
 

Moonsin

Новичок
Сообщения
17
Репутация
2
С этого и стоило начинать.
Есть _MouseClickPlus()
Код:
;===============================================================================
;
; Function Name:  _MouseClickPlus()
; Version added:  0.1
; Description:    Sends a click to window, not entirely accurate, but works
;                 minimized.
; Parameter(s):   $Window     =  Title of the window to send click to
;                 $Button     =  "left" or "right" mouse button
;                 $X          =  X coordinate
;                 $Y          =  Y coordinate
;                 $Clicks     =  Number of clicks to send
; Remarks:        You MUST be in "MouseCoordMode" 0 to use this without bugs.
; Author(s):      Insolence <[email protected]>
;
;===============================================================================
Func _MouseClickPlus($Window, $Button = "left", $X = "", $Y = "", $Clicks = 1)
  Local $MK_LBUTTON       =  0x0001
  Local $WM_LBUTTONDOWN   =  0x0201
  Local $WM_LBUTTONUP     =  0x0202
 
  Local $MK_RBUTTON       =  0x0002  
  Local $WM_RBUTTONDOWN   =  0x0204
  Local $WM_RBUTTONUP     =  0x0205

  Local $WM_MOUSEMOVE     =  0x0200
 
  Local $i                = 0
 
  Select
  Case $Button = "left"
     $Button     =  $MK_LBUTTON
     $ButtonDown =  $WM_LBUTTONDOWN
     $ButtonUp   =  $WM_LBUTTONUP
  Case $Button = "right"
     $Button     =  $MK_RBUTTON
     $ButtonDown =  $WM_RBUTTONDOWN
     $ButtonUp   =  $WM_RBUTTONUP
  EndSelect
 
  If $X = "" OR $Y = "" Then
     $MouseCoord = MouseGetPos()
     $X = $MouseCoord[0]
     $Y = $MouseCoord[1]
  EndIf
 
  For $i = 1 to $Clicks
     DllCall("user32.dll", "int", "SendMessage", _
        "hwnd",  WinGetHandle( $Window ), _
        "int",   $WM_MOUSEMOVE, _
        "int",   0, _
        "long",  _MakeLong($X, $Y))
       
     DllCall("user32.dll", "int", "SendMessage", _
        "hwnd",  WinGetHandle( $Window ), _
        "int",   $ButtonDown, _
        "int",   $Button, _
        "long",  _MakeLong($X, $Y))
       
     DllCall("user32.dll", "int", "SendMessage", _
        "hwnd",  WinGetHandle( $Window ), _
        "int",   $ButtonUp, _
        "int",   $Button, _
        "long",  _MakeLong($X, $Y))
  Next
EndFunc




Func _MakeLong($LoWord,$HiWord)
  Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF))
EndFunc
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Верх