タスクスケジューラーに簡単なアプリを登録して実行してみます。
◆環境
OS |
Windows 7 Professional Service Pack 1 64bit |
C# |
Microsoft Visual C# 2010 01018-587-4054044-70237 |
[ファイル]-[新規作成]-[プロジェクト]を選択。
[コンソール アプリケーション]を選択し、名前に「HelloTask」と入力し「OK」。
プロジェクトを右クリックし「参照の追加」を選択。
System.Windows.Forms を選択し「OK」ボタンを押下。
タスクスケジューラーで起動させる、メッセージボックスを表示するだけのプログラムを作成します。
Program.cs
|
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace HelloTask
{
class Program
{
static void Main( string[] args )
{
MessageBox.Show( "Hello Task" );
}
}
}
|
|
タスクスケジューラーにタスクを登録するプログラムを作成します。
[ファイル]-[新規作成]-[プロジェクト]を選択。
[コンソール アプリケーション]を選択し、名前に「SetTask」と入力し、「ソリューションに追加」を選択し「OK」。
作成した HelloTask を1分間隔で実行するタスクを HelloTask という名前で登録します。
既に同じタスクがあった場合、タスクを削除するようにしました。
Program.cs
|
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SetTask
{
class Program
{
static void Main( string[] args )
{
string res;
int ret;
string taskName = "HelloTask";
string cmd;
// タスクの存在チェック
cmd = "schtasks /query"
+ " /tn " + taskName // タスク名
;
Console.WriteLine( "cmd=[{0}]", cmd );
ret = consoleExecute( cmd, out res );
Console.WriteLine( "ret=[{0}]", ret );
if ( ret == 1 )
{
// タスクの登録
cmd = "schtasks /create"
+ " /tn " + taskName // タスク名
+ " /tr C:\\Temp\\HelloTask.exe"
// 実行ファイル(フルパス)
+ " /sc MINUTE" // 実行間隔:分
;
Console.WriteLine( "cmd=[{0}]", cmd );
}
else
{
// タスクの削除
cmd = "schtasks /delete"
+ " /tn " + taskName // タスク名
+ " /f" // 確認不要
;
Console.WriteLine( "cmd=[{0}]", cmd );
}
ret = consoleExecute( cmd, out res );
Console.WriteLine( "ret=[{0}]", ret );
Console.ReadKey();
}
private static int consoleExecute( string cmd
, out string res
)
{
System.Diagnostics.ProcessStartInfo psi
= new System.Diagnostics.ProcessStartInfo();
psi.FileName
= System.Environment
.GetEnvironmentVariable( "ComSpec" );
// 出力を読み取れるように設定
psi.RedirectStandardInput = false;
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;
// ウィンドウを非表示
psi.CreateNoWindow = true;
// 実行コマンド
psi.Arguments = @"/c " + cmd;
// 実行
System.Diagnostics.Process p
= System.Diagnostics.Process.Start( psi );
// 出力を読み取る
res = p.StandardOutput.ReadToEnd();
// 終了待ち
p.WaitForExit();
return( p.ExitCode );
}
}
}
|
|
実行します。
cmd=[schtasks /query /tn HelloTask]
ret=[1]
cmd=[schtasks /create /tn HelloTask /tr C:\Temp\HelloTask.exe /sc MINUTE]
ret=[0]
タスクの登録に成功したようです。
しばらく待っているとメッセージボックスが表示されました。
ダイアログを閉じて1分待つと再度ダイアログが表示されました。
タスクスケジューラーはうまく動いているようです。
[コントロール パネル]-[管理ツール]-[タスク スケジューラー]を見ると HelloTask が登録されていました。
このままだと1分置きにダイアログが表示され続けるので、再度実行してタスクを削除します。
cmd=[schtasks /query /tn HelloTask]
ret=[0]
cmd=[schtasks /delete /tn HelloTask /f]
ret=[0]
タスクを削除しました。
▲ PageTop ■ Home
Copyright (C) 2014 ymlib.com