Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Scroll Do Mouse


Henrique Flausino

Pergunta

6 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...