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

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

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

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

しかし、YouTube などの動画を全画面表示するとタスクバーが隠れてしまい、この便利な機能が使えなくなってしまうという課題がありました。

そこで今回、Autoit を用いて全画面表示でも音量調節可能なツール「MW_VOLUME」を作成しました。

MW_VOLUME の特徴:

  • 64ビット Windows 10/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)

当サイトでは、Windows 10/11 関連の情報、問題解決法やカスタマイズ方法などを紹介しています。皆様にとって、少しでもお役に立てれば幸いです。

コメント(降順)

OSの不具合に関する質問の場合は、明確かつ迅速に解決するために、以下の情報を分かる範囲で質問に含めてください。

1. 使用しているOSのバージョン

  • 例:Windows 10 Home 22H2、Windows 11 Pro 21H2 など

2. 発生している具体的な症状

  • 具体的な症状をできるだけ詳しく説明してください。
  • エラーメッセージが表示される場合は、その内容を正確に記載してください。
  • いつ、どのような操作中に問題が発生したのかを明記してください。

3. 症状が出たのはいつからですか?

  • 症状が出始めた時期をできるだけ具体的に教えてください。

4. 症状が出る前に何か特別な操作をしましたか?

  • 以下のような操作を行った場合は、教えてください。
    • アプリのインストール
    • システムの設定を変更するツールを使用した
    • ファイルの削除
    • レジストリの編集
    • その他

5. 症状が出た後に試したことはありますか?

  • 問題解決のために試したことを分かる範囲でリストアップしてください。
  • インターネットで調べた解決策を試したかどうか、その結果も記載してください。

6. Windows Updateは定期的に行っていますか?

  • 最近インストールした更新プログラムを教えてください。
  • 例:KB5034441

7. セキュリティソフトをご利用されていますか?

  • セキュリティソフトの種類(名称)を教えてください。

8. PCの型番

  • PCの型番がわかれば教えてください。
  • わからない場合は、「デスクトップ」または「ノート」と記入してください。
タイトルとURLをコピーしました