View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
Zakynthos Zakynthos is offline
external usenet poster
 
Posts: 115
Default 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.