Skip to content

Latest commit

 

History

28 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

icon

WMP Better Controls

WMP Better Controls 是一個可以讓 Windows Media Player 更適合看影片與截圖的外部控制工具

功能

可以在不顯示影片進度條的情況下執行以下動作:

  • 調整快進與後退 (預設是一次調整5秒,快捷鍵為Ctrl+Right, Ctrl+Left)
    • 調整更長時間的快進與後退 (預設是一次調整30秒,快捷鍵為Ctrl+Shift+Right, Ctrl+Shift+Left)
  • 調整音量大小 (預設快捷鍵為Ctrl+Up, Ctrl+Down)
    • 靜音或取消靜音 (預設快捷鍵為Ctrl+M)
  • 以毫秒為單位的截圖格式,可以在短時間內截很多次截圖 (預設快捷鍵為Ctrl+S)

此程式完全在背景執行,沒有主視窗,只靠系統匣圖示與使用者互動

專案結構

├── include
│   ├── ActionQueue.h               // 動作佇列,讓熱鍵動作丟到背景執行緒處理,避免卡住鍵盤Hook
│   ├── ConfigManager.h             // 讀寫config.json
│   ├── DebugLog.h                  // 除錯用的主控台log(由 config.json 的 debugMode 控制開關)
│   ├── HotkeyAction.h              // 熱鍵動作的資料結構與 ActionType 列舉
│   ├── KeyboardHook.h              // 全域低階鍵盤鉤子(WH_KEYBOARD_LL)
│   ├── ModernMediaPlayerBackend.h  // 控制新版媒體播放器App 的 Backend (SMTC API)
│   ├── PlayerController.h          // Backend 共用的抽象介面
│   ├── ScreenshotService.h         // 截圖服務,跟 Backend 無關,只需要一個HWND
│   ├── TrayApp.h                   // 系統匣圖示與右鍵選單
│   └── WMPBackend.h                // 經典版 Windows Media Player 的 Backend,目前未使用,保留給以後接回來
├── resources
│   ├── app.ico                     // 應用程式圖示(工作列/Alt+Tab/系統匣用)
│   ├── app.rc                      // 資源腳本,編譯時把 app.ico 包進exe
│   ├── app_source.png              // icon 來源圖
│   └── resource.h                  // 資源ID定義(IDI_APP_ICON)
├── src
│   ├── ConfigManager.cpp
│   ├── DebugLog.cpp
│   ├── KeyboardHook.cpp
│   ├── ModernMediaPlayerBackend.cpp
│   ├── ScreenshotService.cpp
│   ├── TrayApp.cpp
│   ├── WMPBackend.cpp
│   └── main.cpp                    // 進入點,把上面所有模組組合起來
├── third_party    // 第三方
│   └── nlohmann
│       └── json.hpp
├── .gitignore
└── config.example.json             // 範例設定檔,程式第一次執行時會照這個內容產生config.json

config.json 預設格式

{
    "general": {
        "screenshotFolder": "",
        "screenshotFilenameFormat": "HH-mm-ss-fff",
        "startWithWindows": false,
        "debugMode": false
    },
    "hotkeys": [
        { "key": "Ctrl+Right",       "action": "SeekForward",     "amount": 5 },
        { "key": "Ctrl+Left",        "action": "SeekBackward",    "amount": 5 },
        { "key": "Ctrl+Shift+Right", "action": "SeekForward",     "amount": 30 },
        { "key": "Ctrl+Shift+Left",  "action": "SeekBackward",    "amount": 30 },
        { "key": "Ctrl+Up",          "action": "VolumeUp",        "amount": 1 },
        { "key": "Ctrl+Down",        "action": "VolumeDown",      "amount": 1 },
        { "key": "Ctrl+M",           "action": "ToggleMute",      "amount": 0 },
        { "key": "Ctrl+S",           "action": "Screenshot",      "amount": 0 }
    ]
}

key 支援 Ctrl / Alt / Shift / Win 修飾鍵組合,主鍵支援英數字、方向鍵、SpaceF1~F24

action 可用值: SeekForward(快進)、SeekBackward(後退)、VolumeUp(音量調高)、VolumeDown(音量調低)、ToggleMute(靜音與解除靜音)、Screenshot(截圖)。

其中screenshotFolder是指放截圖的自訂路徑,如果沒有填的話會在同目錄下生成一個名為Screenshots的資料夾來放截圖。另外,screenshotFilenameFormat是截圖的命名方式,目前不管有沒有改都是固定以HH-mm-ss-fff的格式命名。

使用方式

在下載完Releases或建置完成後,點目錄下的WMPBetterControls.exe即可開始使用,另外如果是使用自己建置的方式檔案會在WMPBetterControls/build/Debug目錄底下。

第一次執行的時候會自動在同目錄下生成一個名為config.json的檔案,這個檔案是用來設定上方提到的快進後退音量調高音量調低靜音與解除靜音截圖的快捷鍵以及放截圖的目錄debug模式。此外在改完config.json之後可以直接對系統夾的圖示點右鍵按重新載入設定檔來重新載入,也可以直接在系統夾中按右鍵選擇結束,然後再重新啟動檔案。

另外,如果一開始執行程式時在全螢幕模式或視窗模式下按Ctrl會出現進度條,可以試著切換成不同的模式試試看。

建置方式

原本是使用MinGW去建置與編譯的,但效果不太好,

所以之後是使用 Visual Studio 17 2022的Developer PowerShell 搭配 CMake 來進行建置與編譯

D:\VScode2022\Common7\Tools\Launch-VsDevShell.ps1  # 這裡我是用我自己裝Visual Studio 17 2022的位置下去設定的,不同安裝位置可能會有不同路徑
cd WMPBetterControls
cmake -B build -G "Visual Studio 17 2022" -A x64 -DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/vcpkg-master/scripts/buildsystems/vcpkg.cmake    # 這邊的路徑我也是使用自己裝vcpkg的路徑
cmake --build build

建置出來的 WMPBetterControls.exe 第一次執行時,會在同目錄自動產生一份預設的 config.json (內容跟 config.example.json 一樣)。 之後可以直接編輯這個檔案調整熱鍵,改完在系統匣圖示點右鍵選「重新載入設定檔」,不用重開程式。

License

本專案採用 MIT License,詳細內容請參閱 LICENSE 文件。


歡迎Pull Requests或幫我改進與建議,覺得有幫助的話也可以為這個repo給一個star。

About

一款為了提升 Windows Media Player 在觀看影片與截圖方面的體驗而設計,提供了多種自訂快捷鍵的外部控制工具。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages