Landscape トップページ | < 前の日 2006-04-25 2006-04-27 次の日 2006-04-29 >

Landscape - エンジニアのメモ 2006-04-27

C# でスクリーンセーバーを作る


* C# でスクリーンセーバーを作る

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [.net] [C#] [Windows]

Visual Studio 2005 Express Edition を使ってスクリーンセーバーを作る。

2006-04-25 で Visual Studio 2005 (VS2005) のインストールも終わった。VS2005 をインストールした理由の「作りたかったちょっとしたアプリケーション」とはスクリーンセーバーだ。2006-04-20 の「FF12 のムービーをリッピング (ripping) して再生」でリッピングした MPEG2 ムービーを再生するスクリーンセーバーを作りたい。そういうスクリーンセーバーはすでにいくつかあるが、やっぱり自分好みのものがほしい。

VS2005 に慣れるにはいい題材かな・・・と思ったら、そもそも VS2005 のプロジェクトテンプレートとして「スクリーンセーバースタートキット」というのがあるじゃん。これはラッキー。とりあえずこれを見てみよう。

スクリーンセーバースタートキット

このスタート キット プロジェクトでは、RSS フィードからのニュース記事を表示するスクリーン セーバーの構築方法を紹介します。

- スクリーンセーバースタートキット

スクリーンセーバーの実体は単なる実行ファイルと聞いたことがあったが、その通りだった。いくつかの引数を処理できる実行ファイルを作り、拡張子を exe から scr に変更して windows ディレクトリに配置すれば、「画面のプロパティ」などからスクリーンセーバーとして設定できる。

スクリーンセーバースタートキットには、そういった実行ファイルを作るために必要なもの一式が入っている。メインフォーム一つ、設定用のオプションフォーム一つ、エントリポイント (アプリケーションの開始点) の C# ソースファイルが一つ、あとはライブラリとリソース群。

以下はエントリポイント。Program.cs に書かれている。

static void Main(string[] args) {
    if (args.Length > 0) {
        // 2 文字のコマンド ライン引数を取得します。
        string arg = args[0].ToLower(CultureInfo.InvariantCulture).Trim().Substring(0, 2);
        switch (arg) {
            case "/c":
                // オプション ダイアログを表示します。
                ShowOptions();
                break;
            case "/p":
                // プレビューに対して何もしません。
                break;
            case "/s":
                // スクリーン セーバーのフォームを表示します。
                ShowScreenSaver();
                break;
            default:
                MessageBox.Show("コマンド ライン引数が無効です :" + arg, "コマンド ライン引数が無効です。", MessageBoxButtons.OK, MessageBoxIcon.Error);
                break;
        }
    } else {
        // 渡される引数がない場合、スクリーン セーバーを表示します。
        ShowScreenSaver();
    }
}

必ず必要な引数の処理などは全部テンプレートに入ってる。いやー楽だ。実際、ビルドしてすぐにスクリーンセーバーとして使える。動作を変えたければ、上記から呼んでいる ShowScreenSaver() にその処理を書けば OK。私の場合、動画を再生するコードを書けばいい。

- C# で動画を再生する

動画を再生するにはいろいろ方法はあると思うが、せっかくだからいままでやったことのない領域でやろうと思う。スクリーンセーバー部分はテンプレート使っちゃってるし。というわけで DirextX を使うことにした。再生するだけなら簡単だった。詳細はまた後ほど。

すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。