2016-03-30 13 views

cevap

0

Dim x 
set x=createobject("wscript.shell") 

x.sendkeys"{CLICK LEFT,50,60}" 

veya

x.SendKeys("+{F10}") 'for a right click 

deneyin Eğer o zaman tıklama ve yapan bir makro yazabilirsiniz Autohotkey kullanarak ben Autoit veya autohotkey gibi bir şey kullanarak öneririm senin için işin, hiçbiri VBScript'inizden komut dosyasını çağırın.

0

Sadece VBScript ile mümkün değil. nircmd gibi bir üçüncü taraf aracı kullanmanız gerekir. Fareyi değiştirmek için setcursor, setcursorwin, movecursor ve sendmouse komutlarını kullanabilirsiniz.

Örneğin, burada (üst soldan ölçülen) bir ekran koordinat imleci ve nasıl yapıldığı aşağıda açıklanmıştır bir sağ tıklama:

With CreateObject("WScript.Shell") 
    .Run "nircmd setcursor 100 100", 0, True 
    .Run "nircmd sendmouse right click", 0, True 
End With 

parametre bilgisi için documentation bakınız.

3

Excel için VBA'da bir pencereye (ilgili başvuruları kullanarak) bir sol veya sağ tıklatma göndermek için rutin bir yöntem. AppActivate benzer, sadece pencere başlık gerekir. Eğer SendClick rutin çağrı

argümanları şunlardır:

  • Pencere Başlığı (String)
  • Düğmeler (1 = Sol, 2 = Sağ, -1 = Taşı Fare yalnızca, hiçbir tıklama)
  • x (pencere Sola Bağıl konum)
  • y (pencere Top Bağıl pozisyon)

Keyfini çıkarın!

'Declare mouse events 
Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long 
Public 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) 
Public Const MOUSEEVENTF_LEFTDOWN = &H2 
Public Const MOUSEEVENTF_LEFTUP = &H4 
Public Const MOUSEEVENTF_RIGHTDOWN As Long = &H8 
Public Const MOUSEEVENTF_RIGHTUP As Long = &H10 
'Declare sleep 
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

' Window location 
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 
Public Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long 
Type RECT 
    Left As Long 
    Top As Long 
    Right As Long 
    Bottom As Long 
End Type 

Public Function WindowHandle(ByVal sTitle As String) As Long 
    WindowHandle = FindWindow(vbNullString, sTitle) 
End Function 

Public Sub SendClick(sWnd As String, b As Integer, x As Long, y As Long) 
    Dim pWnd As Long, pRec As RECT 

    pWnd = WindowHandle(sWnd) 
    GetWindowRect pWnd, pRec 

    SetCursorPos pRec.Left + x, pRec.Top + y 
    Sleep 50 
    If b = 2 Then 
     mouse_event MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0 
     Sleep 50 
     mouse_event MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0 
    ElseIf b <> -1 Then 
     mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 
     Sleep 50 
     mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 
    End If 
End Sub 
İlgili konular