Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: DLL для глобального хука Добавлено: 26.08.04 09:10  

Автор вопроса:  SDL | Web-сайт: StarTeleport.Narod.Ru | ICQ: 272678283 
Пишу DLL для глобального хука.

Public Type CREATESTRUCT
        lpCreateParams As Long
        hInstance As Long
        hMenu As Long
        hWndParent As Long
        cy As Long
        cx As Long
        y As Long
        x As Long
        style As Long
        lpszName As String
        lpszClass As String
        ExStyle As Long
End Type
Public Type CBT_CREATEWND
        lpcs As CREATESTRUCT
        hWndInsertAfter As Long
End Type

Public mhHook As Long

Вот CallBack-функция:

Public Function CallBackProc(ByVal cHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim CW As CBT_CREATEWND
Dim whWnd As Long
If cHook < 0 Then CallBackProc = CallNextHookEx(mhHook, cHook, wParam, lParam): Exit Function
If cHook <> HCBT_CREATEWND Then CallBackProc = 0: Exit Function
whWnd = wParam
CopyMemory CW, ByVal lParam, Len(CW)
App.LogEvent mhHook
CallBackProc = 0
CallNextHookEx mhHook, cHook, wParam, lParam
End Function


Клиент вылетает на CopyMemory!
------------------------------
В чем дело?

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 26.08.04 10:02
Первое и не относящееся к делу, ты не верно юзаешь хук, так если мессага не HCBT_CREATEWND, то ты рвешь очередь :(((

А с КопиМемори - вроде все нормально, но это надо посмотреть как она у тебя объявлена... закинь сюда еще и ее декларацию...

Ответить

Номер ответа: 2
Автор ответа:
 SDL



ICQ: 272678283 

Вопросов: 27
Ответов: 16
 Web-сайт: StarTeleport.Narod.Ru
 Профиль | | #2
Добавлено: 27.08.04 08:54
---------
Первое и не относящееся к делу, ты не верно юзаешь хук, так если мессага не CBT_CREATEWND, то ты рвешь очередь :(((
---------
Вроде теперь не рву (см. ниже)

Public Function CallBackProc(ByVal cHook As Long, ByVal wParam As Long, lParam) As Long
Dim CW As CBT_CREATEWND
Dim whWnd As Long
If cHook < 0 Then CallBackProc = CallNextHookEx(mhHook, cHook, wParam, lParam): Exit Function
If cHook = HCBT_CREATEWND Then
whWnd = wParam
CopyMemory CW, ByVal lParam, Len(CW)
If lParam.lpcs.lpszName = "Stupid" Then CallBackProc = 1 Else CallBackProc = 0
Else
CallBackProc = CallNextHookEx(mhHook, cHook, wParam, lParam)' <-- А нужно ли МНЕ возвращать результат?
End If
End Function

---------
А с КопиМемори - вроде все нормально, но это надо посмотреть как она у тебя объявлена... закинь сюда еще и ее декларацию...
---------

А вот и декларация:

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам