PostMessage(FindWindow("ProgMan", 0))
HWND hwnd = FindWindow("ProgMan", 0); if (hwnd) { PostMessage(hwnd, WM_APPCOMMAND, 0, APPCOMMAND_VOLUME_UP << 16); }
Windows シェルに表示されない「Program Manager」というキャプションのウィンドウ。Windows XP SP2 から起動しなくなったプログラムマネージャこと ProgMan.exe との関連性は何だろう?
上記のようにメッセージを送ることで、ボリュームアップを行うことが出来る。他にも次のようなことが出来るらしい。
/* WM_APPCOMMAND = 0x0319, WM_SYSCOMMAND = 0x0112 */ /* ボリュームアップ : APPCOMMAND_VOLUME_UP = 10 */ PostMessage(hwnd, WM_APPCOMMAND, 0, APPCOMMAND_VOLUME_UP << 16); /* ボリュームダウン APPCOMMAND_VOLUME_DOWN = 9 */ PostMessage(hwnd, WM_APPCOMMAND, 0, APPCOMMAND_VOLUME_DOWN << 16); /* ミュート(toggle) : APPCOMMAND_VOLUME_MUTE = 8 */ PostMessage(hwnd, WM_APPCOMMAND, 0, APPCOMMAND_VOLUME_MUTE<< 16); /* monitor off : SC_MONITORPOWER = 0xF170 */ PostMessage(hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, 2); /* screen saver : SC_SCREENSAVE = 0xF140 */ PostMessage(hwnd, WM_SYSCOMMAND, SC_SCREENSAVE, 0);