回答:
AutoHotKeyでシミュレートできます
スクリプトを見つけたら、お知らせします:これらの投稿から:
いくつかのスクリプトを見つける必要があります
#Persistent mhook := > DllCall("SetWindowsHookEx", "int", 14 > ; WH_MOUSE_LL
, "uint", RegisterCallback("WheelHorzHook"), > "uint", 0, "uint", 0) return
WheelLeft:
MsgBox WheelLeft return
WheelRight:
MsgBox WheelRight return
WheelHorzHook(nCode, wParam, lParam) {
global mhook
Critical
if (wParam = 0x020E) ; WM_MOUSEHWHEEL (Vista-only)
{
if (delta := NumGet(lParam+0,10,"Short"))
{
if (delta<0) {
SetTimer, WheelLeft, -1
return true
} else {
SetTimer, WheelRight, -1
return true
}
}
}
return DllCall("CallNextHookEx", "uint", mhook, "int", nCode, "uint",
wParam, "uint", lParam) }
以下は、Shiftおよび(おそらく)ネイティブのマウスホイールスクロールコマンドを使用して実行するAutoHotKeyスクリプトです。
; Shift + Wheel for horizontal scrolling
+WheelDown::WheelRight
+WheelUp::WheelLeft
これはhttps://gist.github.com/cheeaun/160999から直接取得されます。
Microsoftアプリケーションを含む多くのアプリケーションは、水平マウスホイールスクロールをサポートしていないことに注意してください。(この機能はWindows Vistaでのみ導入されたと思います。)
http://www.autohotkey.com/docs/Hotkeys.htmから
マウスホイールの最も便利なホットキーには、ウィンドウのテキストをスクロールする代替モードが含まれます。たとえば、左のControlキーを押しながらホイールを回すと、次のホットキーのペアが垂直方向ではなく水平方向にスクロールします。
~LControl & WheelUp:: ; Scroll left.
ControlGetFocus, fcontrol, A
Loop 2 ; <-- Increase this value to scroll faster.
SendMessage, 0x114, 0, 0, %fcontrol%, A ; 0x114 is WM_HSCROLL and the 0 after it is SB_LINELEFT.
return
~LControl & WheelDown:: ; Scroll right.
ControlGetFocus, fcontrol, A
Loop 2 ; <-- Increase this value to scroll faster.
SendMessage, 0x114, 1, 0, %fcontrol%, A ; 0x114 is WM_HSCROLL and the 1 after it is SB_LINERIGHT.
return
ウィンドウで右マウスを使用してこれを行う方法があります。私は、ジョグ左/ジョグ右ボタンが組み込まれたスクロールホイール付きのマウスを持っています。スクロールホイールを左右に押すだけで、コンテンツが目的の方向に移動します。Logitech VXを持っていますが、とても満足しています。
VXでは、必要に応じて、アプリケーションごとに異なるボタンを構成することもできます。このレベルのカスタマイズは非常に便利です!
AutoHotKeyとWordマクロの両方を必要とするWord(のみ)のハッキングソリューションを以下に示します。Wordのメインドキュメントビューでのみ機能します(これで十分です)。
まず、AutoHotKeyを使用して、マウス操作に応じてカスタムキーストロークをWordに送信します。Alt-M RightArrowとAlt-M LeftArrowを使用しています。(マウスは問題なく送信するため、下のWheelLeftイベントとWheelRightイベントのマッピングもあります。Wordで何か便利なことをする必要があるだけです。)
#If WinActive("ahk_class OpusApp")
+WheelUp::SendInput !+M{Left}
WheelLeft::SendInput !+M{Left}
WheelRight::SendInput !+M{Right}
+WheelDown::SendInput !+M{Right}
#If
Wordのキーバインドを設定します(これを行うには、キーボードカスタマイズダイアログを使用することもできます)。
' Alt-Shift-M Right (keycode 39)
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyM, wdKeyShift, wdKeyAlt), _
KeyCode2:=BuildKeyCode(39), _
KeyCategory:=wdKeyCategoryMacro, Command:="Normal.NewMacros.ScrollRight"
' Alt-Shift-M Left (keycode 37)
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyM, wdKeyShift, wdKeyAlt), _
KeyCode2:=BuildKeyCode(37), _
KeyCategory:=wdKeyCategoryMacro, Command:="Normal.NewMacros.ScrollLeft"
最後に、標準テンプレートでWordマクロを定義します(または上記のマクロへの参照を調整します)。
Sub ScrollRight()
ActiveWindow.SmallScroll ToRight:=1
End Sub
Sub ScrollLeft()
ActiveWindow.SmallScroll ToLeft:=1
End Sub
いくつかの周りを探した後、最終的には(使用方法見つけAutoHotkeyをを、私はソースを記録していなかったので、与えることはできないものの、明らかにAutoHotkeyをフォーラムに異なるソリューションのカップルから適応何も(壊すことなく、他のどこでもExcelで動作し)適切なクレジット申し訳ありません)。
MS Excelには、ユーザーインターフェイスを処理するための奇妙な方法があるようです(ただし、何とか、MS Office開発者が私たちに与えてくれたものを長年見てきたので、私はそれほど驚いていません)。このスクリプトは、MS Wordを除くほとんどすべての場所で機能するようです。誰かがそれを解決できるなら、私に知らせてください!これはおそらく、Wordのウィンドウクラスを見つけて、Excelで行われたように(異なるキーバインドのセットを使用して)具体的にコーディングするようなものです。
#Singleinstance Force
#IfWinActive ahk_class XLMAIN
+WheelUp::
SetScrollLockState, On
SendInput {Left}
SetScrollLockState, Off
Return
+WheelDown::
SetScrollLockState, On
SendInput {Right}
SetScrollLockState, Off
Return
; Everything except Excel.
#IfWinNotActive ahk_class XLMAIN
+WheelUp:: ; Scroll left.
ControlGetFocus, fcontrol, A
Loop 4 ; <-- Increase this value to scroll faster.
SendMessage, 0x114, 0, 0, %fcontrol%, A ; 0x114 is WM_HSCROLL and the 0 after it is SB_LINELEFT.
return
+WheelDown:: ; Scroll right.
ControlGetFocus, fcontrol, A
Loop 4 ; <-- Increase this value to scroll faster.
SendMessage, 0x114, 1, 0, %fcontrol%, A ; 0x114 is WM_HSCROLL and the 1 after it is SB_LINERIGHT.
return
#IfWinActive
Samソリューションから、スクロール速度を構成可能な独自のソリューションを開発しました。
https://gist.github.com/envil/d21a24744b68fda626b4444784f71c32
; Shift + Wheel for horizontal scrolling
+WheelUp::
; Scroll to the left
MouseGetPos,,,id, fcontrol,1
Loop 8 ; <-- Increase for faster scrolling
SendMessage, 0x114, 0, 0, %fcontrol%, ahk_id %id% ; 0x114 is WM_HSCROLL and the 0 after it is SB_LINERIGHT.
return
+WheelDown::
;Scroll to the right
MouseGetPos,,,id, fcontrol,1
Loop 8 ; <-- Increase for faster scrolling
SendMessage, 0x114, 1, 0, %fcontrol%, ahk_id %id% ; 0x114 is WM_HSCROLL and the 1 after it is SB_LINELEFT.
return