|
|
|
Hook в VBA (Excel)
|
|||
|---|---|---|---|
|
#18+
Можно ли повесить hook при помощи VBA (MS Exel ) без DLL? Попробовал такой вариант: 'API functions to be used Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _ ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long Public Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _ (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, _ ByVal dwThreadId As Long) As Long Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long Public Declare Function GetCurrentThreadId Lib "kernel32" () As Long 'Constants to be used in our API functions Public Const EM_SETPASSWORDCHAR = &HCC Public Const WH_CBT = 5 Public Const HCBT_ACTIVATE = 5 Public Const HC_ACTION = 0 Public Const WH_KEYBOARD = 2 Public hHook As Long Function Keyboard(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long If idHook >= 0 Then 'Process keys you want to filter If wParam = vbKeyReturn Then MsgBox "!!!!", vbCritical, "gggg" End If End If Keyboard = CallNextHookEx(hHook, idHook, wParam, lParam) End Function Private Sub Workbook_BeforeClose(Cancel As Boolean) UnhookWindowsHookEx hHook End Sub Private Sub Workbook_Open() lngThreadID = GetCurrentThreadId lngModHwnd = GetModuleHandle(vbNullString) hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf Keyboard, 0, lngThreadID) End Sub не работает! Вернее работает, но Exel зависает на неопределенное время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2006, 16:56 |
|
||
|
|

start [/forum/topic.php?fid=60&fpage=286&tid=2166102]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
15ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 310ms |

| 0 / 0 |
