Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pytanie] nowe zadanie dla klawiszy myszki


Rekomendowane odpowiedzi

Opublikowano

Witam, chciałbym zmienić boczne przyciski od myszki żeby nie cofały strony tylko np następna piosenka albo kółkiem na zmianę głośności. Da sie coś takiego zrobić? jeśli tak to jak.

Mam te 2 problemy ;/

1. Myślałem nad ispressed ale nie mogę znaleźć jaki maja liczbę te klawisze.

2. Coś jak {MEDIA_NEXT} ale to nie działa na win 7 ;/

 

 



"Wyznacz Sobie taki cel, że gdybyś go osiągnął, to zwaliłby Cię z nóg."

The Secret



Pomogłem? Daj +

Opublikowano

_isPressed

 

01 Left mouse button

02 Right mouse button

04 Middle mouse button (three-button mouse)

05 Windows 2000/XP: X1 mouse button

06 Windows 2000/XP: X2 mouse button

 

 

Zawsze możesz użyć gotowych programów (remap mouse):

http://www.highrez.co.uk/scripts/download.asp?package=XMouse
https://www.virustotal.com/pl/file/784c031f65d1d61ba365f1ae79206c574b9c657ea4d57db30f6f885fa6a95386/analysis/1371539635/

 

Te wyznaczniki:

{VOLUME_DOWN} {VOLUME_UP} działają tylko przy włączonym oknie Windows Media Player (choć nie jestem 100% pewien)

WSZYSTKIE PLIKI W CHMURZE DLA MPCFORUM ZOSTAŁY USUNIĘTE. NIE KORZYSTAĆ Z MOICH PROGRAMÓW.

Proszę nie ingerować w moje posty/tematy, w razie potrzeby usunąć całą zawartość. Nie pomagam.

Opublikowano

Zawsze możesz użyć gotowych programów (remap mouse):

http://www.highrez.co.uk/scripts/download.asp?package=XMouse
https://www.virustotal.com/pl/file/784c031f65d1d61ba365f1ae79206c574b9c657ea4d57db30f6f885fa6a95386/analysis/1371539635/

 

Te wyznaczniki:

{VOLUME_DOWN} {VOLUME_UP} działają tylko przy włączonym oknie Windows Media Player (choć nie jestem 100% pewien)

masz like

Może ktoś wie jak to zrobić ?



"Wyznacz Sobie taki cel, że gdybyś go osiągnął, to zwaliłby Cię z nóg."

The Secret



Pomogłem? Daj +

Opublikowano

nie mówcie ze w autoicie nie da się tak zrobić :(



"Wyznacz Sobie taki cel, że gdybyś go osiągnął, to zwaliłby Cię z nóg."

The Secret



Pomogłem? Daj +

Opublikowano

Ehhhh.....

#include <Misc.au3>
$vdll = 'user32.dll'
While 1
if _IsPressed(01, $vdll) Then
Send( "{VOLUME_UP}")
EndIf
Sleep(100)
WEnd

Może to Ci coś rozjaśni :D

Liczę na +

18706.png

Opublikowano

sterowniki się same zainstalowały

 

@edit:

 

ok mam nawet klawisze boczne ale nie mam na rolkę myszki, chce zrobić coś jak to, ale to nie działa

 

 

If _IsPressed(MouseWheel("up", 1)) Then
        Send("{VOLUME_UP}")
EndIf
 

czym zastąpić MouseWheel("up", 1) ?



"Wyznacz Sobie taki cel, że gdybyś go osiągnął, to zwaliłby Cię z nóg."

The Secret



Pomogłem? Daj +

Opublikowano
; ~~ Mouse Hook ~~
;For more info, Visit: http://msdn.microsoft.com/en-us/library/ms644986(VS.85).aspx

;Include GUI Consts
#include <GUIConstants.au3> ;for $GUI_EVENT_CLOSE
#Include <WinAPI.au3> ;for HIWORD

;These constants found in the helpfile under Windows Message Codes
Global Const $WM_MOUSEMOVE = 0x0200 ;mouse move
Global Const $WM_MOUSEWHEEL = 0x020A ;wheel up/down
Global Const $WM_LBUTTONDBLCLK = 0x0203 ;left button
Global Const $WM_LBUTTONDOWN = 0x0201
Global Const $WM_LBUTTONUP = 0x0202
Global Const $WM_RBUTTONDBLCLK = 0x0206 ;right button
Global Const $WM_RBUTTONDOWN = 0x0204
Global Const $WM_RBUTTONUP = 0x0205
Global Const $WM_MBUTTONDBLCLK = 0x0209 ;wheel clicks
Global Const $WM_MBUTTONDOWN = 0x0207
Global Const $WM_MBUTTONUP = 0x0208 

;Consts/structs from msdn
Global Const $MSLLHOOKSTRUCT = $tagPOINT & ";dword mouseData;dword flags;dword time;ulong_ptr dwExtraInfo"
;~ Global Const $WH_MOUSE_LL = 14           ;already declared
;~ Global Const $tagPOINT = "int X;int Y"   ;already declared

;Create GUI
$GUI = GUICreate("Mouse Hook", 178, 158, @DesktopWidth-178, 0) ;Top-Left corner
$_Event = GUICtrlCreateLabel("Event: ", 8, 8, 158, 17)
$_XYpos = GUICtrlCreateLabel("X=     Y=", 8, 32, 157, 17)
$_MData = GUICtrlCreateLabel("Mouse Data: ", 8, 56, 165, 17)
$_Flags = GUICtrlCreateLabel("Flags: ", 8, 80, 168, 17)
$_Timestamp = GUICtrlCreateLabel("Timestamp: ", 8, 104, 162, 17)
$_Extra = GUICtrlCreateLabel("Extra Info: ", 8, 128, 167, 17)
GUISetState()
WinSetOnTop($GUI, "", 1) ;make GUI stay on top of other windows

;Register callback
$hKey_Proc = DllCallbackRegister("_Mouse_Proc", "int", "int;ptr;ptr")
$hM_Module = DllCall("kernel32.dll", "hwnd", "GetModuleHandle", "ptr", 0)
$hM_Hook = DllCall("user32.dll", "hwnd", "SetWindowsHookEx", "int", $WH_MOUSE_LL, "ptr", DllCallbackGetPtr($hKey_Proc), "hwnd", $hM_Module[0], "dword", 0)


While 1
    If $GUI_EVENT_CLOSE = GUIGetMsg() Then Exit ;idle until exit is pressed
WEnd

Func _Mouse_Proc($nCode, $wParam, $lParam) ;function called for mouse events..
    ;define local vars
    Local $info, $ptx, $pty, $mouseData, $flags, $time, $dwExtraInfo
    Local $xevent = "Unknown", $xmouseData = ""
   
    If $nCode < 0 Then ;recommended, see http://msdn.microsoft.com/en-us/library/ms644986(VS.85).aspx
        $ret = DllCall("user32.dll", "long", "CallNextHookEx", "hwnd", $hM_Hook[0], _
                "int", $nCode, "ptr", $wParam, "ptr", $lParam) ;recommended
        Return $ret[0]
    EndIf
   
    $info = DllStructCreate($MSLLHOOKSTRUCT, $lParam) ;used to get all data in the struct ($lParam is the ptr)
    $ptx = DllStructGetData($info, 1) ;see notes below..
    $pty = DllStructGetData($info, 2)
    $mouseData = DllStructGetData($info, 3)
    $flags = DllStructGetData($info, 4)
    $time = DllStructGetData($info, 5)
    $dwExtraInfo = DllStructGetData($info, 6)
    ; $ptx = Mouse x position
    ; $pty = Mouse y position
    ; $mouseData = can specify click states, and wheel directions
    ; $flags = Specifies the event-injected flag
    ; $time = Specifies the time stamp for this message
    ; $dwExtraInfo = Specifies extra information associated with the message. 

    ;Find which event happened
    Select
        Case $wParam = $WM_MOUSEMOVE
            $xevent = "Mouse Move"
        Case $wParam = $WM_MOUSEWHEEL
            $xevent = "Mouse Wheel"
            If _WinAPI_HiWord($mouseData) > 0 Then
                $xmouseData = "Wheel Forward"
            Else
                $xmouseData = "Wheel Backward"
            EndIf
        Case $wParam = $WM_LBUTTONDBLCLK
            $xevent = "Double Left Click"
        Case $wParam = $WM_LBUTTONDOWN
            $xevent = "Left Down"
        Case $wParam = $WM_LBUTTONUP
            $xevent = "Left Up"
        Case $wParam = $WM_RBUTTONDBLCLK
            $xevent = "Double Right Click"
        Case $wParam = $WM_RBUTTONDOWN
            $xevent = "Right Down"
        Case $wParam = $WM_RBUTTONUP
            $xevent = "Right Up"
        Case $wParam = $WM_MBUTTONDBLCLK
            $xevent = "Double Wheel Click"
        Case $wParam = $WM_MBUTTONDOWN
            $xevent = "Wheel Down"
        Case $wParam = $WM_MBUTTONUP
            $xevent = "Wheel Up"
    EndSelect
   
    ; Set GUI control data..
    GUICtrlSetData($_Event, "Event: " & $xevent)
    GUICtrlSetData($_XYpos, "X=" & $ptx & "     Y=" & $pty)
    If $xmouseData <> "" Then
        GUICtrlSetData($_MData, "Mouse Data: " & $xmouseData)
    Else
        GUICtrlSetData($_MData, "Mouse Data: " & $mouseData)
    EndIf
    GUICtrlSetData($_Flags, "Flags: " & $flags)
    GUICtrlSetData($_Timestamp, "Timestamp: " & $time)
    GUICtrlSetData($_Extra, "Extra Info: " & $dwExtraInfo)
   
    ;This is recommended instead of Return 0
    $ret = DllCall("user32.dll", "long", "CallNextHookEx", "hwnd", $hM_Hook[0], _
            "int", $nCode, "ptr", $wParam, "ptr", $lParam)
    Return $ret[0]
EndFunc   ;==>_Mouse_Proc

Func OnAutoItExit()
    DllCall("user32.dll", "int", "UnhookWindowsHookEx", "hwnd", $hM_Hook[0])
    $hM_Hook[0] = 0
    DllCallbackFree($hKey_Proc)
    $hKey_Proc = 0
EndFunc   ;==>OnAutoItExit

 

 

 

 

http://www.autoitscript.com/forum/topic/81761-callback-low-level-mouse-hook/

Opublikowano

@EDIT:

 

Ok mam to i działa jak powinno, zamierzam tego używać i może jakoś jeszcze da się to "ulepszyć" żeby lepiej chodziło bo to jest amatorka

co o tym myślicie ?

 

 

 

#include <GUIConstantsEx.au3>
#include "MouseOnEvent.au3"
#include <Misc.au3>
$vdll = 'user32.dll'


HotKeySet("{ESC}", "esc")
_MouseSetOnEvent($MOUSE_WHEELSCROLLDOWN_EVENT, "_Mouse_Events")
_MouseSetOnEvent($MOUSE_WHEELSCROLLUP_EVENT, "_Mouse_Events")
_MouseSetOnEvent($MOUSE_PRIMARYDOWN_EVENT, "_Mouse_Events")
_MouseSetOnEvent($MOUSE_SECONDARYDOWN_EVENT, "_Mouse_Events")
_MouseSetOnEvent($MOUSE_WHEELDOWN_EVENT, "_Mouse_Events")
While 1
    Sleep(100)
WEnd
Func _Mouse_Events($iEvent)
    If _IsPressed(06, $vdll) Then ; jesli jest wduszony boczny przycisk to dopiero działa reszta 
        Switch $iEvent
            Case $MOUSE_WHEELSCROLLDOWN_EVENT
                ToolTip("DOWN")
                Send("{VOLUME_DOWN}")
            Case $MOUSE_WHEELSCROLLUP_EVENT
                ToolTip("UP ")
                Send("{VOLUME_UP}")
            Case $MOUSE_PRIMARYDOWN_EVENT
                ToolTip("primary down")
                Send("{MEDIA_PREV}")


            Case $MOUSE_SECONDARYDOWN_EVENT
                ToolTip("secondary down")
                Send("{MEDIA_NEXT}")
            Case $MOUSE_WHEELDOWN_EVENT
                ToolTip("wheel down ")
                Send("{MEDIA_PLAY_PAUSE}")
        EndSwitch
        Return 1 ;Block
    EndIf
EndFunc   ;==>_Mouse_Events


Func esc()
    Exit
EndFunc   ;==>esc
 



"Wyznacz Sobie taki cel, że gdybyś go osiągnął, to zwaliłby Cię z nóg."

The Secret



Pomogłem? Daj +

Opublikowano

nie jestem do końca pewien, ale ta biblia troszke zamula, uzyj kodu który ci dałem

pobierz wartosc guzików, w gui będziesz miał($xmouseData) i po prostu porównaj, i wtedy akcje wykonaj

hook, na callbacku ma funkcje _Mouse_Proc

możesz też użyć standardowej bibli winapi(nie wiem które szybsze)

http://www.autoitscript.com/autoit3/docs/libfunctions/_WinAPI_SetWindowsHookEx.htm

tylko jako 1 parametr daj $WH_MOUSE_LL = 14

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...