Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2011, 22:16   #1
shprotus
 
Регистрация: 26.08.2011
Сообщений: 5
По умолчанию Событие нажатия лев. кнопки мыши вне модального окна.

При открытой модальной форме нужно отследить событие нажатия левой кнопки мыши вне этого окна. Подскажите пожалуйста как создать данное событие.
shprotus вне форума Ответить с цитированием
Старый 27.08.2011, 22:48   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Нажатие ЛКМ в окне документа Excel?
Если нет,то только глобальный хук на мышку.
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 27.08.2011, 22:56   #3
shprotus
 
Регистрация: 26.08.2011
Сообщений: 5
По умолчанию

Цитата:
Нажатие ЛКМ в окне документа Excel?
Почти, речь идет от VBA в AutoCAD, т.е. нажатие в окне AutoCAD (вся программа пишится в VBA AutoCAD)
shprotus вне форума Ответить с цитированием
Старый 28.08.2011, 00:17   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Есть только такая обработки мыши
Код:
Private Sub AcadDocument_BeginDoubleClick(ByVal PickPoint As Variant)

End Sub

Private Sub AcadDocument_BeginRightClick(ByVal PickPoint As Variant)

End Sub
На левую кнопку вы не подпишетесь,только хук.Не предусмотрели в VBA.
А что вы хотите отловить?.
Возможно другие события есть возможность использовать.
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 28.08.2011 в 00:34.
doober вне форума Ответить с цитированием
Старый 28.08.2011, 01:35   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

У меня в AutoCAD 2008 работает

Код:
'КОД ФОРМЫ
Private hwnd As Long
Private Declare Function GetActiveWindow Lib "user32" () As Long

Private Sub UserForm_Activate()
hwnd = GetActiveWindow
 Call Hook(hwnd)
 End Sub

Private Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
 Call UnHook(hwnd)
 End Sub

 'КОД МОДУЛЯ
 Option Explicit
 Private Declare Function CallWindowProcA Lib "user32" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal MSG As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
 Private Declare Function SetWindowLongA Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
 Private Declare Function SetWindowTextA Lib "user32" (ByVal hwnd As Long, ByVal lpString As String) As Long
 Private Const GWL_WNDPROC = -4
 Private Const WM_MOUSEWHEEL = &H20A
 Const WM_KEYDOWN As Long = &H100
 Const VK_DOWN As Long = &H28
 Const VK_UP As Long = &H26

Const HC_ACTION As Integer = 0
 Const WH_MOUSE_LL As Integer = 14
  Const WM_LBUTTONDOWN As Integer = &H201

 
 Private lpPrevWndProc As Long, Wheel As Integer

Sub Hook(hwnd As Long)
 lpPrevWndProc = SetWindowLongA(hwnd, GWL_WNDPROC, AddressOf WindowProc)
 End Sub
Sub UnHook(hwnd As Long)
 Call SetWindowLongA(hwnd, GWL_WNDPROC, lpPrevWndProc)
 End Sub
Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
 On Error GoTo xErr

 If uMsg = WM_LBUTTONDOWN   Then
Ваш код 
Else
 WindowProc = CallWindowProcA(lpPrevWndProc, hwnd, uMsg, wParam, lParam)
End If

 xErr:
 End Function
ЗЫ:Но я бы не советовал использовать хук
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 28.08.2011 в 02:20.
doober вне форума Ответить с цитированием
Старый 28.08.2011, 09:45   #6
shprotus
 
Регистрация: 26.08.2011
Сообщений: 5
По умолчанию

Цитата:
Есть только такая обработки мыши
doober я это пробовал, но в момент когда открыта форма, это событие не работает.
Цитата:
У меня в AutoCAD 2008 работает
К сожалению у меня просто виснет и вырубается AutoCAD ( он 2011-й)
shprotus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как послать команду нажатия кнопки мыши Olejik Общие вопросы C/C++ 8 11.02.2012 21:02
событие нажатия кнопки CodeNOT Общие вопросы C/C++ 0 05.01.2011 00:04
Событие указателя мыши если он вне приложения MyLastHit Общие вопросы Delphi 1 19.12.2010 18:11
Событие для правой кнопки мыши MyLastHit Общие вопросы Delphi 4 30.08.2010 17:04
Симуляция нажатия кнопки мыши в VS С2008 atlon Общие вопросы C/C++ 11 06.02.2009 16:16