離れるときは、ライトをオフにします(そして音楽をオフにします)。 コンピューターロックとミキサー

おそらく、誰もがこのようだった-特定のトピックに興味を持ち始め、適切な素材を検索すると、別の興味深い素材に出会うなど。 そして、あるサイトから別のサイトへのリンクにジャンプし始めます。 これは最近私にも起こりました。WM_APPCOMMANDメッセージの例を探していました。さらに、.NET Frameworkにはユーザーセッションを操作するためのクラスがあることがわかりました。



すべてはシンプルなものから始まりました。 私は、アーカイブにWindowsメッセージWM_APPCOMMANDを含む例を見つけ、 C#/ VBおよびVisual Basic 6.0のWindows API関数に関する参考書からそれを含めることにしました。 新しい記事の資料を処理するとき、特定のトピックに関する他の例が何であるかをGoogleで判断することにしました。 そして、私が注目した興味深い例が見つかりました。



よく知られているCodeProjectポータルで、記事CodeProject:システムロック後にシステムボリュームをミュートする方法がありました 無料のソースコードとプログラミングヘルプ 。 これが無料翻訳の記事です(以下、最初の人と呼びます):



私は働いているので、私は1つの良い会社にいます。 そして、私は大きなスピーカーを備えたコンピューターを持っています。 大音量の音楽がスピーカーから流れてくると簡単に動作するので、全力で音をカットします。 私の反対側にいるのは、音楽があまり好きではない同僚です。 そして、私は定期的に空気を吸いに出かけます(つまり、煙ですが、それは私たちの間です)。 また、当社では注文が厳しくなります。職場をしばらく離れる場合は、必ずコンピューターをロックしてください。 そして、そうです。 しかし、1つの問題があります-コンピューターがロックされている場合、サウンドはブロックされず、音楽の再生は継続されます。 私の同僚は、少なくとも私の不在の間は音を消すように頼みました。 もちろん、私は獣ではありません。 しかし、これを手動で行うのは面倒で、ロックされたときにミキサーを自動的にオフにし、ロックが解除されたときにミキサーを再びオンにするユーティリティを作成しました。



ユーティリティの説明はここで終わり、記事の著者はアプリケーションコードを引用します。 .NET FrameworkにはSystemEvents.SessionSwitchイベントがあり、コンピューターのロックとロック解除を追跡できます。 コードは非常に簡単です。



private void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)

{

//If the reason for the session switch is lock or unlock

//send the message to mute or unmute the system volume

if (e.Reason == SessionSwitchReason. SessionLock )

{

SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle,

(IntPtr)APPCOMMAND_VOLUME_MUTE);

}

else if (e.Reason == SessionSwitchReason. SessionUnlock )

{

SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle,

(IntPtr)APPCOMMAND_VOLUME_MUTE);

}

}








正直なところ、私はこのイベントについて知りませんでした。 しかし、私は会社の注文に驚きました。 私たちのオフィスでは、音楽を扱うことに慣れていて、ヘッドフォンを装着し、他の人の邪魔をしない人々。 誰かがスピーカーを使用する状況はほとんど想像できません。 あなたはどうですか?



ちなみに、ミキサーをオフにするという考えは間違っているように思えました。 WM_APPCOMMANDメッセージには、プレーヤーを一時停止できるAPPCOMMAND_MEDIA_PLAY_PAUSEなどのパラメーターが含まれています。 確かに、これはWindows Media Playerで動作し、Winampおよび同様のプレーヤーではほとんど動作しません。 ただし、ユニバーサルWindowsプレーヤーで音楽を聴く場合は、注意してください。



ところで、WM_APPCOMMANDメッセージについて。 APPCOMMAND_DWM_FLIP3D定数を使用すると、Windows 7で使用されているプログラムからFLIP 3Dモードを呼び出すことができます。ちなみに、Windows 7の販売は今日から始まりました(穏やかに、多くの人が今日このニュースにうんざりしていることを知っています)。



PS WM_APPCOMMANDメッセージの簡単な説明は、 私のブログでも読むことができます。

プログラミングを頑張ってください!




All Articles