web-dev-qa-db-ja.com

Windows 7のコマンドラインからボリュームレベルにアクセスするにはどうすればよいですか?

必要なもの

コマンドラインからWindowsボリュームレベルにアクセスできるツールまたはスクリプトを探しています。理想的には、アプリケーションレベルを含むすべてのボリュームを取得および設定できるようになりますが、取得レベルとマスターレベルのみで十分です。 PowerShellWMIJavaScript.Net、Voodoo、または蝶のどれを使用してもかまいません。 0%から100%の範囲にフィットするようにさらに処理できる数値が得られるだけのソリューションであれば十分です。

別の言い方をすれば、プロンプトパーツは、私が入力する必要があるブラックボックスです。

C:\> getvol master
50

あるいは

C:\> wmic <alias> where "device='master' and name='volume'" get name,value
Name    Value
Volume  0xDEADBEEF

それをラッピングするための時間を費やさなければならないか、それを行うためのツールが自由に利用可能であれば、自分で何かを書く必要があるかどうかは気にしない。後者の場合、コアにいくつかのポインター/概念実証が必要になりますが、自分で問題を管理できます。また、この目的のためだけに新しい開発フレームワークをインストールしないようにしたいと思います( music2myear'siglvzx's の両方の回答がbeforeこれらの要件を導入しました)。

「プラットフォーム」として、私は利用できます:

  • windows 7 Home Premiumに付属するもの
  • cygwinに付属するもの
  • Perl
  • Python
  • Ruby

一般に、オープンソースのソリューションが非常に好まれます。クローズドソースツールは、フリーウェアであり、ソースが信頼できるものであれば問題ありません。商用ソリューションはありません。

必要ないもの

  • いくつかの similarquestions は主に音量の設定を扱います。何よりも、ボリュームを設定するのではなく、getする必要があります。
  • nircmdc があり、ボリュームの設定をサポートしていますが、取得はできません。
  • レジストリにkey [1]があり、GUIミキサーを介して音量を調整すると予測どおりに変化する値がありますが、ハードウェアの変更やシステムのアップグレードでそのキーを読み取ると破損する傾向があります。合理的に将来を見据えたソリューションに依存できない限り、それを使用することはできません。
  • Webで音量を設定するためのAutoHotKeyおよびWSHソリューションがありますが、a)これらも設定にのみ適しています。さらに悪いことに、b)SendKeysまたは自動化を使用しますGUIを制御するためのマウスの動き。 GUIの自動化はオプションではありません。

Freenodeの##windowsチャネルはこれまで通り役に立たず、Googleはハックや中途半端な回避策で溢れ、WinAPI呼び出しをWiccanの呪文から区別できません。

誰かが方法を知っていますか?


  1. HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}\0000\MixerSettings\eLineOutTopo\PrimaryNode000
17
peth

この質問はStackOverflowで質問され、回答されました: https://stackoverflow.com/questions/4640106/how-to-get-current-volume-of-system-sound-device-in-windows-7 =

答え: https://stackoverflow.com/a/4640225/704977

EndpointVolume APIを探しています。これは、Windows Vistaでリリースされた新しいオーディオAPIの一部であり、マスターボリュームの取得または設定に使用できます。
... CodeProjectで利用可能な完全なマネージラッパーライブラリがあります:Vista Core Audio APIマスターボリュームコントロール。

5
music2myear

AutoHotkeyソリューションが必要ではないとおっしゃっていましたが、 AutoHotkey APIには探しているものが含まれていると思います。

GUIを作成したり、AutoHotkeyでホットキーを使用したりする必要はありません。 .ahkスクリプトをコンパイルすることで、強力なコマンドラインユーティリティを作成できます。そうは言っても、stdoutを操作するための FileAppend コマンドを確認する必要があります。

4
iglvzx

マスターボリュームは、レジストリの場所に格納されています。

...\#eSpeakerTopo\Properties\{7fb7b48f-531d-44a2-bcb3-5ad5a134b3dc}

たとえば、このREGファイルはマスターボリュームを100%に設定します。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\DeviceClasses\{6994ad04-93ef-11d0-a3cc-00a0c9223196}\##?#HDAUDIO#FUNC_01&VEN_8384&DEV_7680&SUBSYS_83847680&REV_1034#4&31e60982&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\#eSpeakerTopo\Properties\{7fb7b48f-531d-44a2-bcb3-5ad5a134b3dc}\20000]
@=hex(ffff1003):00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
  00,00,00

キー名は異なる場合があります。変更を有効にするには、再起動する必要があります。

Propertiesregeditまたは{7fb7b48f-531d-44a2-bcb3-5ad5a134b3dc}キーを編集または開くことができない場合があります。必要なアクセス許可がありますが、次のようなエラーが表示される場合があります。

[Window Title]
Error Opening Key

[Content]
{7fb7b48f-531d-44a2-bcb3-5ad5a134b3dc} cannot be opened.
An error is preventing this key from being opened.

[OK]

これは、キー名が長すぎるためです。長いキー名を一時的に1文字に変更してから、再度名前を変更する必要があります。

0
XP1