Tiện ích khay hệ thống Windows
Mỗi ứng dụng một mức âm lượng,
chỉ một cú nhấp.
Chrome 30%, Teams 70%, Spotify 20%. Thay vì mở bộ trộn âm lượng mỗi lần, một hồ sơ đưa tất cả về đúng chỗ. Hai cú nhấp từ khay, hoặc một thanh trượt trong bảng điều khiển.
Cửa sổ mở ra khi bấm biểu tượng ở khay. Cũng có thể đổi đúng những giá trị đó ngay từ menu.
Làm được gì
Việc bạn vẫn làm trong bộ trộn âm lượng, nay chỉ hai cú nhấp từ khay.
Âm lượng và tắt tiếng theo ứng dụng
Gom các phiên đang phát tiếng theo từng ứng dụng. Ứng dụng chạy nhiều tiến trình như Chrome vẫn chỉ là một dòng.
Mỗi ứng dụng một thiết bị phát khác nhau
Game ra loa, Discord ra tai nghe. Thiết bị phát mặc định cũng đổi được từ menu, và hồ sơ lưu luôn thiết bị cùng với âm lượng.
Giữ nguyên khi đóng rồi mở lại ứng dụng
Nhớ âm lượng của từng ứng dụng và đặt lại khi ứng dụng đó phát tiếng trở lại . Rút ra cắm lại thiết bị, hay thức dậy sau khi ngủ, cũng áp dụng lại hồ sơ.
Micrô cũng trong tầm tay
Nút gấp nhất khi đang họp. CtrlAltK tắt và bật lại micrô.
Bảng điều khiển
Sửa hồ sơ, đổi phím tắt, viết quy tắc tự động hoá — tất cả trong cửa sổ. Không bao giờ phải sửa tay tệp cài đặt.
Chỉ những gì bạn bật mới đi ra ngoài
Báo cáo sử dụng ẩn danh, kiểm tra cập nhật và thông báo của nhà phát triển là tất cả, và cả ba đều mặc định tắt. Bảng điều khiển chỉ mở trên 127.0.0.1 và đòi một token được tạo mới mỗi lần chạy.
Hồ sơ
Hoàn cảnh đổi thì âm lượng của mọi ứng dụng cũng nên đổi theo.
Có sẵn ba hồ sơ, và trạng thái hiện tại có thể lưu thành hồ sơ mới bất cứ lúc nào. Chuyển tự động — khi ứng dụng khởi chạy, khi cắm thiết bị, hoặc theo khung giờ — mặc định tắt.
| Hồ sơ | Tổng | Cài đặt theo ứng dụng |
|---|---|---|
| Work | 72% | Chrome 30% · Teams 70% · Spotify 20% |
| Gaming | 80% | Discord 65% · Spotify 15% · trình duyệt tắt tiếng |
| Meeting | 60% | Teams 80% · Zoom 80% · Chrome 20% · Spotify tắt tiếng |
Phím tắt
Khi tay đã đặt sẵn trên bàn phím.
Đổi được hết, và nếu chương trình khác đã dùng tổ hợp đó thì bạn sẽ được báo, thay vì thất bại trong im lặng.
- CtrlAlt↑ Tăng âm lượng tổng
- CtrlAlt↓ Giảm âm lượng tổng
- CtrlAltM Tắt tiếng
- CtrlAltK Tắt tiếng micrô
- CtrlAltS Cửa sổ
- CtrlAlt1–3 Đổi hồ sơ
Định tuyến theo ứng dụng
Một lối đi Windows chưa từng ghi vào tài liệu, được kiểm chứng trước khi dùng.
đo thực tế
«chỉ ứng dụng này ra tai nghe» không có API công khai. Phải gọi giao diện nội bộ mà ứng dụng Cài đặt của Windows dùng, Windows.Media.Internal.AudioPolicyConfig , và cả mã định danh giao diện lẫn bố cục vtable của nó đều khác nhau giữa các bản dựng. SoundDesk không dùng chúng theo phỏng đoán.
Lần gọi đầu tiên, nguy hiểm nhất, được thực hiện trong một tiến trình riêng, để khay vẫn sống nếu nó sập, và sau khi ứng dụng thực sự được chuyển đi thì đọc lại bằng Get ; chỉ khi đúng thiết bị đó quay lại mới nâng lên mức «đã xác minh». Nếu đọc lại không khớp, tính năng tự tắt và mở trang cài đặt của Windows.
| Trạng thái | Căn cứ |
|---|---|
| verified | Đã thực sự chuyển một tiến trình và endpoint id đọc lại khớp. Nếu không có gì đang phát, phần tự kiểm tra tạo cho mình một phiên với luồng im lặng và kiểm tra bằng chính nó |
| probable | Không tạo được thứ gì để đọc lại — chỉ biết rằng việc kích hoạt factory và gọi qua vtable đã không làm sập |
| unsupported | Tự kiểm tra thất bại, hoặc lệnh gọi thành công mà Windows không áp dụng → bạn được dẫn tới trang cài đặt |
Bảo mật
An toàn ngay cả khi chạy thẳng từ thư mục tải về.
Đây là những vấn đề mà một tệp chạy di động thực sự gặp phải. Không phải danh sách kiểm tra trừu tượng: mỗi dòng đều có mã nguồn và một bài kiểm thử đứng sau.
| Mối đe doạ | Cách xử lý |
|---|---|
| Chiếm quyền DLL Một DLL giả đặt cạnh tệp exe |
DLL hệ thống chỉ được nạp theo System32 đường dẫn tuyệt đối. Khi khởi động, thư mục chứa exe và thư mục làm việc bị loại khỏi đường tìm kiếm |
| Chiếm tên mutex Một phiên khác giành tên trước và chặn việc khởi chạy |
Đối tượng một-thực-thể nằm trong không gian tên Local\ . |
| Tiêm qua tệp cài đặt | endpoint id chỉ tới được lệnh gọi COM sau khi qua kiểm tra bằng biểu thức chính quy |
| Giả mạo nhật ký Một ký tự xuống dòng trong tên tiến trình để chèn dòng nhật ký giả |
Tên ứng dụng và thiết bị bị loại bỏ ký tự điều khiển rồi giới hạn độ dài |
| Đường dẫn tự khởi động không có dấu nháy | Giá trị Run luôn là đường dẫn tuyệt đối trong dấu nháy, và chỉ dùng HKCU . |
| Can thiệp trái phép vào bảng điều khiển Chương trình khác trên cùng máy, hoặc một trang web |
127.0.0.1 mà thôi, cộng với một token 256 bit mới mỗi lần chạy và kiểm tra Host cùng Origin. Token biến thành cookie HttpOnly ngay lần tải đầu và biến mất khỏi thanh địa chỉ |
Quyền riêng tư
Chỉ những gì bạn bật mới đi ra ngoài.
Tên ứng dụng và thông tin phiên được xử lý ngay trên máy này chứ không ở đâu khác, và cài đặt chỉ là một tệp JSON. Có đúng ba tính năng chạm tới mạng — báo cáo sử dụng ẩn danh, kiểm tra cập nhật và thông báo của nhà phát triển — và cả ba đều tắt sẵn. Trước khi bạn bật một trong số đó, không một yêu cầu nào được gửi đi.
| Tệp cài đặt | %APPDATA%\SoundDesk\config.json |
|---|---|
| Nhật ký | %APPDATA%\SoundDesk\sounddesk.log |
| Báo cáo sử dụng ẩn danh | Mặc định tắt — khi bật, mỗi ngày một lần: một id cài đặt ngẫu nhiên, phiên bản, bản dựng Windows, ngôn ngữ và ba con số đếm |
| Kiểm tra cập nhật · thông báo của nhà phát triển | Mặc định tắt — khi bật, chỉ phiên bản đang chạy và ngôn ngữ. Không gửi id cài đặt |
| Những thứ không bao giờ được gửi đi | Tên ứng dụng · tên thiết bị · đường dẫn tệp · tên tài khoản Windows |
| API được dùng | IMMDeviceEnumerator · IAudioSessionManager2 · ISimpleAudioVolume · IPolicyConfig · AudioPolicyConfig |
| Tự khởi động | HKCU\Software\Microsoft\Windows\CurrentVersion\Run (tuỳ chọn) |
Tự kiểm tra
Hãy hỏi thẳng ứng dụng xem nó có chạy được trên máy bạn không.
Chạy từng tính năng của chính nó trên ngăn xếp âm thanh thật, và trả lại nguyên trạng những gì đã động vào. Không làm bất cứ thay đổi nào có thể phát ra tiếng — âm lượng tổng được chứng minh bằng cách ghi lại đúng giá trị đang có, tức chỉ kiểm chứng đường gọi.
| Lệnh | Kiểm tra những gì |
|---|---|
| --selftest-audio | Thiết bị · âm lượng tổng · micrô · âm lượng, tắt tiếng và định tuyến theo ứng dụng · hồ sơ · phím tắt toàn cục. Nếu không ứng dụng nào đang phát, định tuyến được kiểm tra bằng phiên im lặng của chính nó |
| --selftest-panel | Tệp chạy đã đóng gói có thực sự phục vụ bảng điều khiển hay không |
| --report | Thiết bị, phiên và hồ sơ dưới dạng JSON |
Kết quả trên máy này
OK Âm lượng theo ứng dụng (firefox.exe 100% → 42% → khôi phục)
OK Tắt tiếng theo ứng dụng
OK Định tuyến đầu ra theo ứng dụng (firefox.exe → ASUS VZ279 → khôi phục)
OK Đổi thiết bị mặc định · hồ sơ · phím tắt toàn cục
— Micrô (máy này không có thiết bị đầu vào)
11 passed, 0 failed, 2 skipped — Windows 10 22H2 bản dựng 19045
Ở đâu cũng vậy
Bằng ngôn ngữ của bạn, trên máy của bạn.
Cùng một bộ cài đặt ở nhà và ở công ty, đọc bằng ngôn ngữ bạn dùng, gọi từ macro khi cần.
12 ngôn ngữ
Đi theo ngôn ngữ hiển thị của Windows. Bạn cũng có thể tự chọn, và khi đổi thì bảng điều khiển cùng menu khay đổi ngay tại chỗ, không cần khởi động lại.
한국어 · English · 日本語 · 简体中文 · 繁體中文 · Español · Português · Français · Deutsch · Русский · Italiano · Tiếng Việt
Ở nhà và ở công ty, cùng một bộ cài đặt
Xuất hồ sơ, phím tắt và quy tắc ra một tệp rồi nhập trên máy khác. Thiết bị được ghép theo tên — cùng một tai nghe nhưng id trên mỗi máy lại khác, nên chỉ chép tệp thôi sẽ làm phần định tuyến lặng lẽ biến mất. Những thiết bị máy này không có sẽ được nêu tên cho bạn.
Gọi từ macro
Dùng thẳng từ một nút Stream Deck hay một dòng AutoHotkey. Hoạt động dù khay có đang chạy hay không, và không tạo thêm biểu tượng thứ hai. Mã thoát 0 nếu có gì đó thay đổi, 1 nếu không khớp gì cả.
SoundDesk.exe --set-app chrome.exe=25
SoundDesk.exe --profile Gaming
SoundDesk.exe --list apps
Cài đặt
Một tệp. Không có trình cài đặt.
SoundDesk.exe vào nơi bạn muốn rồi chạy, biểu tượng sẽ hiện ở khay. Muốn gỡ thì xoá tệp và thư mục cài đặt là xong. Không cần Python.