最新 RSS

horiday blog

2009/04/13

[computer] Windows モニタの自動オン,オフ

Windows 上のマシンで自動でモニタのオン,オフを行なうプログラムを作りました.大型モニタを通して,掲示板のように使うマシンを対象としてます.

X サーバ上なら xset s on/off とかを crontab に登録すれば良さそうなのですが,Windows なのでまず窓の杜で手頃なソフトウェアを探しました.ちょうど良さそうなプログラムが見つからなかったので諦めました.

さて,Windows 上でのプログラムを通してモニタのオン,オフする方法は知人から下記のページを教えてもらい,できそうな感じがしました.

// screen_set.c
#include <windows.h>
int WINAPI WinMain(
  HINSTANCE hInstance, 
  HINSTANCE hPrevInstance, 
  LPSTR lpCmdLine, 
  int nShowCmd ) 
{
  // 1 de off, 2 de on
  PostMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 1);
  return 0;
}

あとはこのプログラムを cygwin でコンパイルして,cygwin が入っていないパソコンでも実行できるようにすればできそうです.

調べてみると,単に -mno-cygwin を付けてコンパイルすれば良いだけみたいなので,上記のソースから下記のように実行ファイルを作成しました.

% gcc -mno-cygwin screen-set.c -o screen-off.exe

PostMessage の引数を調整して,screen-on.exe も作って,タスクに登録するとモニタの自動オンオフが実現できました.

cygwin は何かと便利なものですね...