Как сгенерировать нажатие левой кнопкой мыши, когда нажата правая?
Public Declare Function CallWindowProc Lib "user32" _ Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _ ByVal hwnd As Long, _ ByVal Msg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long) As Long Public Declare Function GetWindowLong Lib "user32" _ Alias "GetWindowLongA" (ByVal hwnd As Long, _ ByVal nIndex As Long) As Long Public Declare Function SetWindowLong Lib "user32" _ Alias "SetWindowLongA" (ByVal hwnd As Long, _ ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long Public Const GWL_WNDPROC = (-4)
Declare Function SendMessageBynum Lib "user32" _ Alias "SendMessageA" (ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long) As Long
Public Const WM_LBUTTONDBLCLK = &H203 Public Const WM_LBUTTONUP = &H202 Public Const WM_LBUTTONDOWN = &H201 Public Const WM_RBUTTONUP = &H205
Public glngPrevWndProc As Long
Dim wp As Long, lp As Long
Public Function MyWindowProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long ' Если правая кнопка мыши отпущена после нажатия... If Msg = WM_RBUTTONUP Then wp = wParam lp = lParam ' Дважды щёлкнуть левой кнопкой мыши SendMessageBynum hwnd, WM_LBUTTONDOWN, wp, lp SendMessageBynum hwnd, WM_LBUTTONUP, wp, lp SendMessageBynum hwnd, WM_LBUTTONDBLCLK, wp, lp SendMessageBynum hwnd, WM_LBUTTONUP, wp, lp ' Показывать всплывающее меню If Form1.Option1(1) Then MyWindowProc = 0 Exit Function End If End If ' остальные сообщения передаются для обработки стандартной ' процедуре окна MyWindowProc = CallWindowProc(glngPrevWndProc, hwnd, Msg, wParam, lParam) End Function
'Использование: Создайте форму и поместите на неё текстовое поле и 2 радио-кнопки с индексами, равными 0 и 1
Private Sub Form_Load() Dim l As Long ' Перенаправление сообщений Windows от формы к собственной ' процедуре обработки сообщений Module1.MyWindowProc glngPrevWndProc = GetWindowLong(Text1.hwnd, GWL_WNDPROC) SetWindowLong Text1.hwnd, GWL_WNDPROC, AddressOf MyWindowProc End Sub
Private Sub Form_Unload(Cancel As Integer) ' Возвращение управления форме SetWindowLong Text1.hwnd, GWL_WNDPROC, glngPrevWndProc End Sub
Если Вас заинтересовала или понравилась информация программирование на Visual Basic - "Как сгенерировать нажатие левой кнопкой мыши, когда нажата правая?", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!