View Full Version : کلیک کردن با موس
  
sohrab o
سه شنبه 19 شهریور 1387, 18:30 عصر
چطور میشه با دستوارت وی بی مثلا بر روی گزینه start با موس کلیک کرد؟
xxxxx_xxxxx
سه شنبه 19 شهریور 1387, 18:39 عصر
سلام آقا مهدی کم پیدایی برادر.
 
شما دقیقا برای start می خواین. یا جاهای دیگه هم ممکنه.
 
برای این می پرسم چون خود start میشه باز کرد بدون کنترل موس. دستورشو اگه پیدا کردم میزارم.
sohrab o
سه شنبه 19 شهریور 1387, 20:27 عصر
سلام آقا مهدی کم پیدایی برادر.
 
شما دقیقا برای start می خواین. یا جاهای دیگه هم ممکنه.
 
برای این می پرسم چون خود start میشه باز کرد بدون کنترل موس. دستورشو اگه پیدا کردم میزارم.
سلام مرسی
نه فرقی نداره فقط خواستم مثال بزنم.مثلا تو مختصات x,y کلیک کنه
sohrab o
چهارشنبه 20 شهریور 1387, 01:42 صبح
دوستان با تشکر خودم پیداش کردم واسه شما هم میزارم
Option Explicit
Private Type POINTAPI
   x As Long
   y As Long
End Type
Private Declare Sub mouse_event Lib "user32" ( _
   ByVal dwFlags As Long, _
   ByVal dx As Long, ByVal dy As Long, _
   ByVal cButtons As Long, _
   ByVal dwExtraInfo As Long)
Private Const MOUSEEVENTF_ABSOLUTE = &H8000 '  absolute move
Private Const MOUSEEVENTF_LEFTDOWN = &H2 '  left button down
Private Const MOUSEEVENTF_LEFTUP = &H4 '  left button up
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20 '  middle button down
Private Const MOUSEEVENTF_MIDDLEUP = &H40 '  middle button up
Private Const MOUSEEVENTF_MOVE = &H1 '  mouse move
Private Const MOUSEEVENTF_RIGHTDOWN = &H8 '  right button down
Private Const MOUSEEVENTF_RIGHTUP = &H10 '  right button up
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Property Get x() As Long
Dim tP As POINTAPI
   GetCursorPos tP
   x = tP.x
End Property
Public Property Get y() As Long
Dim tP As POINTAPI
   GetCursorPos tP
   y = tP.y
End Property
Public Property Let x(ByVal x As Long)
   MoveTo x, y ' y from property get
End Property
Public Property Let y(ByVal y As Long)
   MoveTo x, y ' x from property get
End Property
Public Sub MoveTo(ByVal x As Long, ByVal y As Long)
Dim xl As Double
Dim yl As Double
Dim xMax As Long
Dim yMax As Long
   
   ' mouse_event ABSOLUTE coords run from 0 to 65535:
   xMax = Screen.Width \ Screen.TwipsPerPixelX
   yMax = Screen.Height \ Screen.TwipsPerPixelY
   xl = x * 65535 / xMax
   yl = y * 65535 / yMax
   ' Move the mouse:
   mouse_event MOUSEEVENTF_MOVE Or MOUSEEVENTF_ABSOLUTE, xl, yl, 0, 0
   
End Sub
Public Sub Click(Optional ByVal eButton As MouseButtonConstants = vbLeftButton)
Dim lFlagDown As Long
Dim lFlagUp As Long
   Select Case eButton
   Case vbRightButton
      lFlagDown = MOUSEEVENTF_RIGHTDOWN
      lFlagUp = MOUSEEVENTF_RIGHTUP
   Case vbMiddleButton
      lFlagDown = MOUSEEVENTF_MIDDLEDOWN
      lFlagUp = MOUSEEVENTF_MIDDLEUP
   Case Else
      lFlagDown = MOUSEEVENTF_LEFTDOWN
      lFlagUp = MOUSEEVENTF_LEFTUP
   End Select
   ' A click = down then up
   mouse_event lFlagDown Or MOUSEEVENTF_ABSOLUTE, 0, 0, 0, 0
   mouse_event lFlagUp Or MOUSEEVENTF_ABSOLUTE, 0, 0, 0, 0
End Sub
VB.SOS
جمعه 22 شهریور 1387, 18:57 عصر
دوستان برعكس اين سوال رو بلدن؟ يعني بشه تشخيص داد كاربر تو چه مختصاتي كليك كرده؟
sohrab o
شنبه 23 شهریور 1387, 00:42 صبح
آره دیگه این که کاری نداره
باید تشخیص بدی که کلیک شده یا نه؟
زمانی که کلیک شده باید مکان موسو بگیری
هر قسمتشو نداشتی بگو واست بزارم
VB.SOS
شنبه 23 شهریور 1387, 13:33 عصر
همين تشخيص دادن كليك شده يا نه؟
البته بايد بگم مي خوام اين كار مستقل از يه hWND خاص باشه
sohrab o
شنبه 23 شهریور 1387, 17:33 عصر
بیا این یه نمونه واست پیدا کردم
sohrab o
شنبه 23 شهریور 1387, 19:00 عصر
در ضمن واسه کلیک راست هم این خطو باید توی پروژه تغییر بدی
If GetAsyncKeyState(2) = 0 Then
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.