« Mac用Gimp2.8.2の公式Native版[更新] | トップページ | MacBook Pro 13-inch Mid 2010にWindows 8をインストール[レポート] »

2012年9月 2日 (日)

MacBook Pro+Win7で音がミュートされる問題を解決その2

以前「MacBook Pro+Win7で音がミュートされる問題を解決」の中で音の明瞭化をオフにするという解決方法を述べたが、その方法では、その名の通り、音が明瞭でなくなってしまうという問題がある(苦笑)。

そこで、WSH でミュートを解除する方法はないかと調べたところ、どうも、システムそのものを直接操作して解除することはできないらしいことがわかった(AppleScript なら System Events でできるのだが)。

仕方なく、音量調整プログラムを起動して、そのインターフェースを自動操作することで、無理矢理ミュート解除を行うことにした(AppleScript で言えば「System Events での Keystroke 命令」に相当する)。

MuteOff.vbs
Option Explicit

Dim wShell
Dim numWCount
Dim numFlag
Dim numOCount

Set wShell=CreateObject("WScript.Shell")

wShell.Run "sndvol.exe"
numFlag = 0
For numWCount =1 To 1000 '無限ループを避けて1000回くらいであきらめる
	if wShell.AppActivate("音量ミキサー") Then
		numFlag = numFlag + 1
		Exit For
	Else
		WScript.Sleep 100
	End if
	numWCount = numWCount + 1
Next

if numFlag < 1 Then
	MsgBox "失敗。"
Else
	For numOCount = 1 To 8
		wShell.SendKeys "{LEFT}"
		wShell.SendKeys "{RIGHT}"
		wShell.AppActivate("音量ミキサー")
		wShell.SendKeys "{TAB}"
		numOCount = numOCount + 1
	Next

	wShell.SendKeys "{esc}"
End if

Set wShell = Nothing

「音量ミキサー(sndvol.exe)」を起動し、タブキーで音量調整バーにフォーカスを合わせ、矢印キーを左右に動かす、という動作を行わせている。左右に動かすのは、どちらか一回だけ動かすと音量が上がる(もしくは下がる)ことになっていまうため、戻す必要があるからである。また、八回も繰り返しているのは、音量ミキサーが起動した時点でウィンドウのどこにフォーカスが合ってるのか、一定しないからである。

このスクリプトを「スタートアップ」に登録しておけば、ミュートを自動で解除できる。もっとも、ログイン後に実行されるため、Windows 7 のログインサウンドは鳴らない。

なお、このスクリプトがスタートアップ時に実行されても、たまにサウンドアイコン(画面右下の「タスクバー通知領域」上に表示される)がミュート表示のまま変化しないことがあるが、音はちゃんと鳴るようになっているはずである。

« Mac用Gimp2.8.2の公式Native版[更新] | トップページ | MacBook Pro 13-inch Mid 2010にWindows 8をインストール[レポート] »