Merhabalar
Daha önce formda maouse tekerleği için kod aramıştım bu form sitesinde buldum aradığımı
işime yarayan kod aşağıda ki gibi
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetForegroundWindow Lib "user32" () As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(ByVal Destination As Long, ByVal Source As Long, ByVal Length 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 CallNextHookEx Lib "user32" (ByVal hHook As Long, _
ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public Type POINTAPI
X As Long
Y As Long
End Type
Public Type MSLLHOOKSTRUCT
pt As POINTAPI
mouseData As Long
flags As Long
time As Long
dwExtraInfo As Long
End Type
Public Const HC_ACTION = 0
Public Const WH_MOUSE_LL = 14
Public Const WM_MOUSEWHEEL = &H20A
Public hhkLowLevelMouse, lngInitialColor As Long
Public udtlParamStuct As MSLLHOOKSTRUCT
Public intTopIndex As Integer
Public EvnIndex As Integer
Public Function GetHookStruct(ByVal lParam As Long) As MSLLHOOKSTRUCT
CopyMemory VarPtr(udtlParamStuct), lParam, LenB(udtlParamStuct)
GetHookStruct = udtlParamStuct
End Function
Public Function LowLevelMouseProc _
(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
On Error Resume Next
If (nCode = HC_ACTION) Then
If wParam = WM_MOUSEWHEEL Then
LowLevelMouseProc = True
With UserForm1.ComboBox1
If GetHookStruct(lParam).mouseData > 0 Then
.TopIndex = intTopIndex - 1
intTopIndex = .TopIndex
Else
.TopIndex = intTopIndex + 1
intTopIndex = .TopIndex
End If
End With
With UserForm1.ComboBox2
If GetHookStruct(lParam).mouseData > 0 Then
.TopIndex = EvnIndex - 1
EvnIndex = .TopIndex
Else
.TopIndex = EvnIndex + 1
EvnIndex = .TopIndex
End If
End With
End If
Exit Function
End If
LowLevelMouseProc = CallNextHookEx(0, nCode, wParam, ByVal lParam)
End Function
Public Sub Hook_Mouse()
hhkLowLevelMouse = SetWindowsHookEx _
(WH_MOUSE_LL, AddressOf LowLevelMouseProc, Application.Hinstance, 0)
End Sub
Public Sub UnHook_Mouse()
If hhkLowLevelMouse <> 0 Then UnhookWindowsHookEx hhkLowLevelMouse
End Sub
yukarıdaki kod 32 bit de çok güzel çalşıyor
Fakat bu kod 64 bit de çalışmadı hata verdi.
hata mesajı şu şekilde
Compile error:
The code in this project must be updated for use on 64-bit
systems. Please review and update Declare statements and then
mark them with the PtrSafe attribute.
64 bit de çalışması için ne yapmamız lazım yardımcı olurmusunuz lütfen
SAYGILARIMLA
-
- Destek
-
-
Özel Arama