Visual basic for a rightkey command
Thanks for this - I've run it from Excel and don't get an error message -
except nothing seems to be happening!!! - other than a slight flicker in the
Excel window when I click the button
The problem is that I need to send the right click to another program in a
window titled "WFM Configuration Utility - Contracts" and then go one down
in the pop up box and send an 'Enter' to select the first option - I have
tried puting the following code into the Test subroutine as follows:
Sub test()
AppActivate "WFM Configuration Utility - Contracts"
With ThisWorkbook.Sheets("Sheet1")
SendMouseClick , , False
End With
End Sub
Can you point me in the right direction to get this code working?
"RB Smissaert" wrote:
You could try API code like this:
Option Explicit
Public 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_MOVE = &H1
Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_RIGHTDOWN = &H8
Private Const MOUSEEVENTF_RIGHTUP = &H10
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20
Private Const MOUSEEVENTF_MIDDLEUP = &H40
Private Const MOUSEEVENTF_ABSOLUTE = &H8000
Public Declare Function GetCursorPos _
Lib "user32" (lpPoint As POINTAPI) As Long
Public Declare Function SetCursorPos Lib _
"user32" (ByVal x As Long, _
ByVal y As Long) As Long
Sub SendMouseClick(Optional lX As Long = -1, _
Optional lY As Long = -1, _
Optional bRightClick As Boolean)
'NOTE: lX and lY are assumed to be Screen coordinates
' relative to the uper left corner (0, 0)
'----------------------------------------------------
Dim lFlags As Long
Dim Point As POINTAPI
Dim bReturn As Boolean
'get the mouse cursor position to return to
GetCursorPos Point
'Set cursor position
If lX -1 Then
SetCursorPos lX, lY
bReturn = True
Else
lX = Point.x
lY = Point.y
End If
DoEvents
'Send the mouse event
If bRightClick Then
lFlags = MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_ABSOLUTE
Else
lFlags = MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_ABSOLUTE
End If
mouse_event lFlags, lX, lY, 0, 0
DoEvents
If bRightClick Then
lFlags = MOUSEEVENTF_RIGHTUP Or MOUSEEVENTF_ABSOLUTE
Else
lFlags = MOUSEEVENTF_LEFTUP Or MOUSEEVENTF_ABSOLUTE
End If
mouse_event lFlags, lX, lY, 0, 0
DoEvents
'return to the old mouse position
If bReturn Then
SetCursorPos Point.x, Point.y
DoEvents
End If
End Sub
Function GetCursorPosition() As Variant
Dim Point As POINTAPI
Dim arr(1 To 2) As Long
'get the mouse cursor position to return to
GetCursorPos Point
arr(1) = Point.x
arr(2) = Point.y
GetCursorPosition = arr
End Function
Sub test()
SendMouseClick , , False
End Sub
RBS
"Zakynthos" wrote in message
...
I need to right click an icon in an explorer window of a database, which
only
seems to work with a right mouse click. I've tried the right click key on
the keyboard and it doesn't work.
I've also tried other key combinations to see if I could simulate the
right
mouse click with a sendkeys statement such as ctrl and f10 but that
doesn't
work either.
Is there a way of creating this rightclick in Visualbasic code?
Many thanks.
|