Autoit プログラミングWindows 10Windows 11ソフトウェア便利機能自作ソフト

システム音量を変更するツール – マウスホイールで音量変更

スポンサーリンク

スポンサーリンク
スポンサーリンク
スポンサーリンク

Windows 11 バージョン 2H22 では、サウンドアイコンにマウスカーソルを合わせ、マウスホイールを上下に回すと音量を変更できるようになりました。

便利になりましたが、YouTube などで全画面表示した際にタスクバーが隠れてしまいます。

タスクバーが隠れてしまうと、マウスホイールで音量を変更することが出来なくなってしまいます。

少し不便だと思い、全画面表示でも音量を変更できるように、Autoit で音量変更ツール「MW_VOLUME」を作成してみました。

このツールは、64ビットの Windows 10 と Windows 11 に対応しており、ソースコードの公開もしていますので、参考にしてみてください。

音量変更ツールの画面

ツールはとても小さく、画面の右下(タスクバーの上)に表示するようにしています。

ツール上にマウスカーソルを持っていき、カーソルが手の形に変わった時にマウスホイールを上に回すと音量を上げ、下に回すと音量を下げます。

ツールがアクティブでなくなった場合、音量が変更できませんので、その場合は一度ツールをクリックしてからマウスホイールを回してください。

Windows 10 では、音量を変更すると画面の左上に音量の大きさが表示されます。

Windows 10

Windows 11 では、画面の中央下に音量の大きさが表示されます。

Windows 11

音量変更ツールの仕組みとコード

音量変更ツールの仕組み

音量の上げ下げは、ツール上でのマウスホイールの動作を監視し、上に回せば音量を上げるメッセージをウィンドウハンドル「SHELLDLL_DefView」に送信し、下に回せば音量を下げるメッセージを送信します。

キーボードのショートカットで音量変更する時と同じような動作をします。

常に画面のトップに表示するようにしていますので、YouTube などを全画面表示で見ながら音量を変更することが出来ます。

また、ツール自体をマウスでドラッグして移動できますので、操作しやすい場所に持っていくことができます。

元の位置に戻したい時は、ツールの右クリックメニューから「タスクバーの上に戻る」をクリックします。

このツールはタスクバーにはアイコンを表示しませんので、ツールを閉じたい場合は右クリックメニューから「閉じる」をクリックして終了してください。

音量変更ツールのコード

2023/3/14:コードの修正を行いました。(Ver 1.0.0.3)

修正前

Global $hwnd = ControlGetHandle('[CLASS:Progman]', '', '[CLASS:SHELLDLL_DefView]')

修正後

Global $hwnd = ControlGetHandle('[CLASS:Progman]', '', '')

MW_VOLUME

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=SndVol_0_1.ico
#AutoIt3Wrapper_Outfile_x64=MW_VOLUME.exe
#AutoIt3Wrapper_Res_Description=マウスホイールでシステム音量を変更
#AutoIt3Wrapper_Res_Fileversion=1.0.0.3
#AutoIt3Wrapper_Res_ProductName=MW_VOLUME
#AutoIt3Wrapper_Res_ProductVersion=1.3
#AutoIt3Wrapper_Res_CompanyName=©2022 wenbang https://windows-waza.com/
#AutoIt3Wrapper_Res_LegalCopyright=©2022 wenbang https://windows-waza.com/
#AutoIt3Wrapper_Res_LegalTradeMarks=MW_VOLUME.exe
#AutoIt3Wrapper_Res_Language=1041
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPIProc.au3>
#include <SendMessage.au3>
#include <Misc.au3>
#include-once

If Not FileExists(@ScriptDir & "\Image\SndVol.bmp") Then; 画像ファイルが見つからない場合プログラムを終了します。
    MsgBox(48, " MW_VOLUME - エラー", "必要なファイルが見つかりません。プログラムを終了します。")
    Exit
EndIf

If _Singleton(" MW_VOLUME", 1) = 0 Then Exit; プログラムの二重起動を抑止

DllCall("User32.dll", "bool", "SetProcessDpiAwarenessContext", "HWND", "DPI_AWARENESS_CONTEXT" - 2); 高 DPI に対応

Opt("TrayIconHide", 1); トレイアイコンを非表示

Global $hwnd = ControlGetHandle('[CLASS:Progman]', '', '')
Global $APPCOMMAND_VOLUME_UP = 0xA0000;
Global $APPCOMMAND_VOLUME_DOWN = 0x90000;
;~ Global $APPCOMMAND_VOLUME_MUTE = 0x80000;
Global $Xpos, $Ypos

; ウィンドウの大きさ
$Width = 25
$Hight = 25

_GetTaskbarPosition()

$Form = GUICreate(" MW_VOLUME", $Width, $Hight, $Xpos, $Ypos, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
GUISetBkColor(0x000000)
GUISetCursor(0, 1)

; $GUI_WS_EX_PARENTDRAG を指定することで、画像をドラッグしてウィンドウの移動を可能にする。
$Icon = GUICtrlCreatePic(@ScriptDir & "\Image\SndVol.bmp", 2, 2, 23, 23, -1, $GUI_WS_EX_PARENTDRAG)

$Menu = GUICtrlCreateContextMenu($Icon); サウンドアイコンの右クリックにメニューを追加
$MoveToTaskBar = GUICtrlCreateMenuItem("タスクバーの上に戻る", $Menu)
GUICtrlCreateMenuItem("", $Menu)
$help = GUICtrlCreateMenuItem("WEBサイトへ", $Menu)
$exit = GUICtrlCreateMenuItem("終了", $Menu)
GUISetState()

_WinAPI_EmptyWorkingSet()

; ウィンドウの上でマウスホイールを回したかどうかを監視
GUIRegisterMsg($WM_MOUSEWHEEL, "WM_MOUSEWHEEL")

While 1
    $nMSG = GUIGetMsg()
    Switch $nMSG
        Case $GUI_EVENT_CLOSE, $exit
            Exit
        Case $MoveToTaskBar
            _GetTaskbarPosition(); 解像度やタスクバーのサイズが変更された時のためにタスクバーの位置を再度取得します。
            WinMove($Form, "", $Xpos, $Ypos)
        Case $help
            ShellExecute("https://windows-waza.com/")
    EndSwitch
WEnd

Func WM_MOUSEWHEEL($hWndGUI, $MsgID, $WParam)
    If BitShift($wParam, 16) > 0 Then ; マウスホイールが上に回された
        ; 音量アップ
        _SendMessage($hwnd, $WM_APPCOMMAND, 0x200eb0, $APPCOMMAND_VOLUME_UP)
    Else ; マウスホイールが下に回された
        ; 音量ダウン
        _SendMessage($hwnd, $WM_APPCOMMAND, 0x200eb0, $APPCOMMAND_VOLUME_DOWN)
    EndIf
EndFunc   ;==>WM_MOUSEWHEEL

Func _GetTaskbarPosition()
    ; タスクバーの位置を取得し、メインウィンドウの位置をタスクバーの右上にする
    $TaskBar = WinGetPos("[class:Shell_TrayWnd]")
    If Not @error Then
        $Xpos = @DesktopWidth - $Width
        $Ypos = @DesktopHeight - $Hight - $TaskBar[3]
    EndIf
EndFunc   ;==>_GetTaskbarPosition

更新情報

2022/10/04 Ver.1.0.0.0 リリース
2022/12/17 Ver.1.0.0.2 リリース

1.ウィンドウを移動できるように変更しました。

2.右クリックメニューに「タスクバーの上に戻る」を追加しました。

3.ウィンドウ上の音量表示を廃止しました。

2023/3/14 Ver.1.0.0.3 リリース

1.一部の環境で音量が変更できない問題を修正しました。

音量変更ツール「MW_VOLUME」Ver 1.0.0.3 のダウンロード

※自作ソフトについて

MW_VOLUM(Vector)

コメント(降順)

タイトルとURLをコピーしました