Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Scroll Do Mouse


Henrique Flausino
 Share

Question

6 answers to this question

Recommended Posts

  • 0
Fera esse assunto já foi discutido aqui no forum utilize a busca!

Olá MrMALJ.

Como havia dito já procurei no site e não tem nenhum tópido com a solução deste problema, o unico que se aproxima é um onde tenho que criar uma dll, que tb não foi totalmente solucionado, pois não tem como implementar esta dll.

Por este motivo tive q abrir um tópico para tratar este assunto.

Desde já agradeço pela ajuda.

Att.

Henrique Flausino

Link to comment
Share on other sites

  • 0

Bom eu só digitei mouse na busca e veio alguns....

http://scriptbrasil.com.br/forum/index.php...46&hl=mouse

http://scriptbrasil.com.br/forum/index.php...87&hl=mouse

http://scriptbrasil.com.br/forum/index.php...45&hl=mouse

Bom dai tem que dar uma lida nos conteúdos... acho que alguns conseguiram chagar a uma solução, mais talvez não tenham postado, infelizmente eu não cheguei a usar nenhuma delas por isso não tenho como dizer se funcionam ou não, mais com certeza se funcionar você terá que fazer algumas adequações!

t+

Link to comment
Share on other sites

  • 0

Olá MrMALJ :) e cia.

Seguinte, consegui achar uma solução para este problema e estou postando, pois como eu, muitos precisam desta função.

Obs.: Para solucionar meu problema coloque como evento ao abrir o form, porém pode ser colocado como botão, o que não aconselho.

Vamos lá, vou passar um passo a passo da solução, pois sei o quanto é dificil para um iniciante fazer com que esta função seja executada.

1° - Baixe o arquivo extraia ele na pasta onde esta o bd.

Esta dll não foi feita por mim, por isso não posso garantir q seja 100%, mas comigo esta funcionando normalmente.

http://riquetec.scriptmania.com/MouseHook.zip

2° - Insira no access um novo módulo com o nome de modMouseHook e o código abaixo.

Option Compare Database
Option Explicit

Private Declare Function LoadLibrary Lib "kernel32" _
Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long

Private Declare Function FreeLibrary Lib "kernel32" _
(ByVal hLibModule As Long) As Long

Private Declare Function StopMouseWheel Lib "MouseHook" _
(ByVal hWnd As Long, ByVal AccessThreadID As Long, _
Optional ByVal bNoSubformScroll As Boolean = False, Optional ByVal blIsGlobal As Boolean = False) As Boolean

Private Declare Function StartMouseWheel Lib "MouseHook" _
(ByVal hWnd As Long) As Boolean

Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long

' Instance returned from LoadLibrary call
Private hLib As Long


Public Function MouseWheelON() As Boolean
MouseWheelON = StartMouseWheel(Application.hWndAccessApp)
If hLib <> 0 Then
    hLib = FreeLibrary(hLib)
End If
End Function

Public Function MouseWheelOFF(Optional NoSubFormScroll As Boolean = False, Optional GlobalHook As Boolean = False) As Boolean
Dim s As String
Dim blRet As Boolean
Dim AccessThreadID As Long

On Error Resume Next
' Our error string
s = "Sorry...cannot find the MouseHook.dll file" & vbCrLf
s = s & "Please copy the MouseHook.dll file to your Windows System folder or into the same folder as this Access MDB."

' OK Try to load the DLL assuming it is in the Window System folder
hLib = LoadLibrary("MouseHook.dll")
If hLib = 0 Then
    ' See if the DLL is in the same folder as this MDB
    ' CurrentDB works with both A97 and A2K or higher
    hLib = LoadLibrary(CurrentDBDir() & "MouseHook.dll")
    If hLib = 0 Then
        MsgBox s, vbOKOnly, "MISSING MOUSEHOOK.dll FILE"
        MouseWheelOFF = False
        Exit Function
    End If
End If

' Get the ID for this thread
AccessThreadID = GetCurrentThreadId()
' Call our MouseHook function in the MouseHook dll.
' Please not the Optional GlobalHook BOOLEAN parameter
' Several developers asked for the MouseHook to be able to work with
' multiple instances of Access. In order to accomodate this request I
' have modified the function to allow the caller to
' specify a thread specific(this current instance of Access only) or
' a global(all applications) MouseWheel Hook.
' Only use the GlobalHook if you will be running multiple instances of Access!
MouseWheelOFF = StopMouseWheel(Application.hWndAccessApp, AccessThreadID, NoSubFormScroll, GlobalHook)

End Function


'******************** Code Begin ****************
'Code courtesy of
'Terry Kreft & Ken Getz
'
Function CurrentDBDir() As String
Dim strDBPath As String
Dim strDBFile As String
    strDBPath = CurrentDb.Name
    strDBFile = Dir(strDBPath)
    CurrentDBDir = Left$(strDBPath, Len(strDBPath) - Len(strDBFile))
End Function
'******************** Code End ****************
3° - Abra o form em modo design e insira o seguinte evento nas propriedades do form. Ao Abrir: Procedimento do Evento
Private Sub Form_Open(Cancel As Integer)
Dim blRet As Boolean
blRet = MouseWheelOFF(False)
End Sub
Prontinho, agora o scroll do mouse esta desativado, abaixo vou postar o código para reativar o scroll, caso alguém queira colocar como botão.
Private Sub Command16_Click()
Dim blRet As Boolean
blRet = MouseWheelON
End Sub

Esta ai a solução, caso alguém tenha uma mais simples, por favor posta aqui, pois usar dll nem sempre é bom, pois o user pode excluir a mesma.

Solução retirada do site http://www.lebans.com/mousewheelonoff.htm (em inglês).

Agradeço a todos pela força.

Att.

Henrique Flausino

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.4k
×
×
  • Create New...