NJS Developers

日本情報システム株式会社の開発ブログ

簡単!タスクトレー常駐アプリ開発

みなさんこんにちは。日本情報システム株式会社 ICTソリューション部の進藤です。
2015年も残り1ヶ月をきりましたね。寒い日が続いておりますので、風邪を引かぬようご自愛ください。
さて、たまには技術者らしいことを書いてみようと思います。 今回は、初めてでも簡単に作れる常駐アプリの作り方をご紹介します。

画像

事前準備

Visual Studio 2015のインストール

今回はこれを見れば誰でも開発できるように、無料で配布されている開発ツールVisual Studio 2015」を使ってプログラミングしてみましょう。

上記サイト内の「Communityを無料ダウンロード」をクリックすれば、vs_community.exeというインストーラがダウンロードされるので、それをダブルクリックしてインストールしてください。
Visual Studio 2008/2010でも同じ手順で開発できます。

手順

1.Visual Studio 2015の起動

インストールした「Visual Studio 2015」を起動。

2.メニュー選択

ダミー

ファイル(F) → 新規作成(N) → プロジェクト(P)をクリック。

3.プロジェクト種類を選択

ダミー

Visual C#Windowsフォームアプリケーションを選択、任意の名前を指定し、OKボタンをクリック。

4.Program.cs変更

ダミー
namespace testap
{
    static class Program
    {
        /// 
        /// アプリケーションのメイン エントリ ポイントです。
        /// 
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            //Application.Run(new Form1());
            // ↓変更
            new Form1();
            Application.Run();
        }
    }
}

5.NotifyIcon追加

ダミー

ツールボックスのNotifyIconをダブルクリック。

ダミー

画面左下辺りに「notifyIcon1」が表示されればOK。

6.ContextMenuStrip追加

ダミー

ツールボックスのContextMenuStripをダブルクリック。

ダミー

画面左下辺りに「ContextMenuStrip」が表示されればOK。

7.NotifyIcon設定

ダミー

画面左下辺りに表示されている「notifyIcon1」をクリックすると、今度は右下にそのプロパティが表示されるので、下記のように設定する。
【変更点】
ContextMenuStrip:contextMenuStrip1を選択
Icon:タスクトレーに表示されるアイコン。(お好きなものに)
Text:アイコンのオンマウス時に表示されるツールチップの中身。

8.終了メニューの追加

ダミー

画面左下辺りに表示されている「contextMenuStrip1」をクリックすると、フォームにテキスト入力欄が表示されるので、「終了」と入力する。
入力後、「終了」をダブルクリックして、終了時の処理を記述する。

private void 終了ToolStripMenuItem_Click(object sender, EventArgs e)
{
    // アイコン非表示
    notifyIcon1.Visible = false;
    
    // アプリケーション終了
    Application.Exit();
}

9.ビルド

ダミー

ビルド(B) → ソリューションのビルド(B)をクリック。

ダミー

上記のように表示されればOK。

10.さっそく動かしてみよう

ダミー

開始をクリック。

ダミー

タスクトレーにアイコンが表示されれば、常駐アプリの完成です。
完成したアプリは、手順3で作成したプロジェクトフォルダ内にプロジェクト毎に保存されます。 今回の例で言うと以下のパスに保存されます。
C:\Users\ユーザ名\Documents\Visual Studio 2015\Projects\testap\testap\bin\Debug\testap.exe

おまけ

常駐アプリで何をするかは人それぞれですが、メモ帳が使えなくなってしまうプログラムを組んでみましょう。(まったく意味ない機能ですが、あくまでサンプルということで)

public Form1()
{
    InitializeComponent();
    
    // 無限ループ(CPU負荷注意)
    while (true)
    {
        // プロセスリストにて"notepad"が存在する場合
        if (System.Diagnostics.Process.GetProcessesByName("notepad").Length > 0)
        {
            // "notepad"というプロセスを全て取得
            System.Diagnostics.Process[] ps = System.Diagnostics.Process.GetProcessesByName("notepad");
        
            // 上記で取得したプロセスを全て終了
            foreach (System.Diagnostics.Process p in ps)
            {
                p.Kill();
            }
        
            // アラート表示
            MessageBox.Show("メモ帳は使えません。", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }
    
        // 1秒毎
        System.Threading.Thread.Sleep(1000);
    }
}

上記を記述したら、ビルドしてプログラムを実行させてみてください。アプリが常駐した状態でメモ帳を開くと、警告が表示されてメモ帳が閉じてしまうはずです。

ダミー

プログラム自体のエラーはありませんが、CPU、メモリ負荷とかWindows系のエラーを一切気にしていないプログラムなのでご了承ください。

まとめ

いかがでしたか。
常駐アプリの仕組みをご理解頂けたでしょうか。興味がある方は是非試してみてください。

PAGE TOP