- PR -

C#でタスクを登録するやり方について

1
投稿者投稿内容
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2006-10-24 11:57
お世話になります。
先日、「schtasks.exeの機能をXP HomeEditionで使いたい」というタイトルで、
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=34309&forum=7
こちらで質問させて頂きました。
その際、下記の質問を紹介されたのですが、この内容についてお聞きしたいことがあります。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=27038&forum=7&start=8

やろうとしていることは、「1分おきに実行するタスク」を作ることなのですが、
このコードの途中にあるpTrigerのところで、
コード:
TASK_TRIGGER pTrigger = new TASK_TRIGGER();

pTrigger.cbTriggerSize = (ushort)Marshal.SizeOf(pTrigger);
pTrigger.wBeginYear = 2006;
pTrigger.wBeginMonth = 1;
pTrigger.wBeginDay = 1;
pTrigger.wStartHour = 0;
pTrigger.wStartMinute = 0;
pTrigger.MinutesInterval = 1;
pTrigger.TriggerType = TASK_TRIGGER_TYPE.TASK_TIME_TRIGGER_ONCE;



このように、MinutesIntervalの値を1にしてみたのですが、これを実行すると、
「値が有効な範囲にありません。」とエラーが表示され、

コード:
Marshal.ReleaseComObject(iTaskTrigger);



の箇所で停止してしまいます。
pTrigger.MinutesInterval = 1;
をコメントアウトすれば、タスクへの登録は正常にできています。

同じように、TriggerTypeを
コード:
pTrigger.TriggerType = TASK_TRIGGER_TYPE.TASK_TIME_TRIGGER_DAILY;


としても、同じエラーが表示されます。

どうも単純に追記や変更するだけではダメなようなのですが、どこをどう変更すればよいのでしょうか?どこかで定義する必要があるのでしょうか?

お手数ですがご回答よろしくお願いいたします。

_________________
◇◇◇ 社内SEを兼務する文系プログラマです。
◇◇◇ WinXP VisualStudio2005(C#メイン) MS・SQLServer とかを使っています。
◇◇◇ 周囲にプログラマがいないので、みなさんだけが頼りですヽ(`Д´;ノ
ださいくろう
常連さん
会議室デビュー日: 2006/10/17
投稿数: 46
お住まい・勤務地: 豊田市
投稿日時: 2006-10-24 12:09
この方はすがすがしいほど開き直るので、耐性のない人はスルーしてください。
http://www.atmarkit.co.jp/bbs/phpBB/search.php?term=&addterms=any&forum=all&search_user_id=204471&sortby=-1&searchboth=both&submit=Search
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2006-10-24 12:22
http://www.google.com/search?q=MinutesInterval+TASK_TRIGGER
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2006-10-24 12:33
前回質問してから、ずっと調べているんです。
当然、その検索結果などから出てくるサイトもほとんど見てます。
ですが、わからないので質問しているんです。

Googleで海外のサイトも合わせても35件しかヒットしないような内容なんです。
初心者用のサイトなんかもありませんし、理解のとっかかりがないんです。

なので、ここで質問しています。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-10-24 12:53
以下の記述にあるとおり、MinutesDurationを設定していないのが原因ではないですか?
MinutesInterval
(snip)
The number of minutes specified here must be less than the MinutesDuration setting.
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2006-10-24 13:06
ご回答ありがとうございます。

MinutesDurationを設定してもやってましたが、やはり同じ箇所で停止してしまうのですが、
これは必須項目なんでしょうか?
セットしてもしなくてもエラーが変わらなかったので外してましたが……。


Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2006-10-24 16:46
タスクへ登録できました!
ですが、理由がよくわかりません。
書いたコードのもう少し前にある、

コード:

ITask iTask = (ITask)iTaskScheduler.NewWorkItem("taskname", CLSID_CTask, IID_ITask);



という箇所があるのですが、これの"taskname"を変更したら、タスクに登録されるようになりました……。
タスクに重複して登録しようとしてたのかと思ってみてみましたが、
以前のタスク名で登録されたタスクはありませんでした……。
何が悪いのかわかりませんが、ひとまずはこれでOKでしょうか……。


あと、TASK_TIME_TRIGGER_DAILYのところはどうも別の問題みたいですので、
あらためてスレッド立てさせてもらいます。
ご回答ありがとうございました。


[ メッセージ編集済み 編集者: Wingard 編集日時 2006-10-24 16:50 ]
1

スキルアップ/キャリアアップ(JOB@IT)