一時間ごとにアプリを実行させるには?


lasyu  2009-06-09 12:38:12  No: 142025  IP: 192.*.*.*

藁をもすがる思いではじめて利用させて頂きます。

環境(WindowsXP Pro /VB6.0)です。
一時間ごとにvbで作成したアプリを起動させたいのですが
何かいい方法はないでしょうか?

編集 削除
魔界の仮面弁士  2009-06-09 12:57:35  No: 142026  IP: 192.*.*.*

> 藁をもすがる思いではじめて利用させて頂きます。

お気持ちは分かりますが、それは人に物を尋ねるときに使える言葉ではありませんよ。

「藁にもすがる」というのは、無いよりはマシという意味。
『頼りにならないものまでも頼りにしたくなること』の喩えです。 


> 一時間ごとにvbで作成したアプリを起動させたいのですが
OS のタスクに登録しておいてはいかがでしょう。

コントロール パネル → タスク → スケジュールされたタスクの追加

編集 削除
おまけ  2009-06-09 13:00:16  No: 142027  IP: 192.*.*.*

既に、魔界の仮面弁士さんの回答がありますが。
Windows 標準の  タスクで解決できませんか?
→別案1、解決できない場合、ランチャ、アプリケーションランチャ
  というジャンルのプログラムを探してみましょう。
  タスクマネージャでも探せるかも。
→別案2、自分で、ランチャを作ってしまいましょう。
  この時、安直にShell で起動、ではない方法を探しましょう。
  アプリが、順調に自動終了してくれれば、いいですが、
  強制終了も、見こして、Process 関係について調べましょう。

編集 削除
lasyu  2009-06-09 13:05:04  No: 142028  IP: 192.*.*.*

質問の内容はvbにて出来ないか?です。
タスクスケジューラ以外での手段はないでしょうか?

初めての質問に対してことばの揚げ足とは....
ちょっと残念ですね。

編集 削除
熊谷隆史  2009-06-09 13:23:39  No: 142029  IP: 192.*.*.*

ITaskSchedulerとか。
 (VBなので、タイプライブラリを作成して)
http://junktxt.blog90.fc2.com/blog-entry-8.html

編集 削除
おまけ  2009-06-09 13:55:13  No: 142030  IP: 192.*.*.*

>環境(WindowsXP Pro /VB6.0)です。
>一時間ごとにvbで作成したアプリを起動させたいのですが
>何かいい方法はないでしょうか?
から、
>質問の内容はvbにて出来ないか?です。
>タスクスケジューラ以外での手段はないでしょうか?
に変わっていますね、他に、後出しジャンケンは、ないですか?

編集 削除
魔界の仮面弁士  2009-06-09 13:58:06  No: 142031  IP: 192.*.*.*

> 質問の内容はvbにて出来ないか?です。
なるほど、「VB のアプリから VB のアプリを起動する」という意味だったのですね。

元の質問には、「VB のアプリを起動」としか書かれていないので、
コーディング不要な、より簡単な方法で答えてしまいました。失礼しました。

ところで、VB でなければならない理由(あるいは、タスクでは用をなさない理由)は何でしょうか?
たとえば、毎回違った引数を渡さなければいけないとか、
実は「一時間ごと」だけではなく、追加の条件があったりするのでしょうか。

# 質問される時には、実装しようとしていることの「手段」だけではなく、
# 何故その処理を行いたいのかという「目的」をごく簡単にでも書いておくと、
# 回答がつきやすくなりますよ。


> タスクスケジューラ以外での手段はないでしょうか?
常駐アプリとしてであれば、Form (非表示でも可)に Timer を貼っておき、
そこから定期的に Shell 関数等で呼び出すという手が使えるかと思います。

呼び出し元となる VB アプリが起動していなければならないので、
デスクトップにログオンされていないと使えないという制限がありますが、
比較的簡単に実装できる方法です。


ちなみに、先のタスク スケジューラに登録する方法の場合、無人運転時には
ユーザー・インターフェースが表示されないという点に注意してください。
(ログインしている時にのみ実行させるという設定にもできます)
もし、無人実行用アプリにする場合、App.UnattendedApp を True の状態にするために
プロジェクトのプロパティで、「対話型インターフェイスの抑制」にチェックを
入れておくようにしてください。(無人実行する予定が無い場合は、読み飛ばしていただいて結構です)


なお、今回の案件には当てはまらないのかもしれませんが、もしもスケジュールを
プログラムから登録するのであれば、WMI の Win32_ScheduledJob クラスを使うと楽ですよ。
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/sept04/hey0922.mspx


> 初めての質問に対してことばの揚げ足とは....

お気を害されたのであればごめんなさい。責めている訳ではありません。
>> お気持ちは分かります
と書きましたように、言いたい事は伝わってきましたから。

初めてだからこそ、最初が肝心として老婆心を出したまでです。
(言葉の意味を間違って覚えているといけないので…)

編集 削除
lasyu  2009-06-09 15:56:11  No: 142032  IP: 192.*.*.*

後出しジャンケン・・・

アホw

編集 削除
魔界の仮面弁士  2009-06-09 16:32:54  No: 142033  IP: 192.*.*.*

追記:

> 常駐アプリとしてであれば、Form (非表示でも可)に Timer を貼っておき、
タイマーコントロールを使った方が良いとは思いますが、もしも
Timer コントロールを使いたくないのであれば、API で処理する方法も
あります。
http://www.freevbcode.com/ShowCode.asp?ID=3499

なお上記サンプル(codeTimer.zip)は、そのままでは動きませんが、
フォームの「Sub Command1_Click()」を「Sub CmdActiveer_Click()」に
変更すると、動くようになります。


> そこから定期的に Shell 関数等で呼び出すという手が使えるかと思います。
Shell の代わりに、WshShell オブジェクトの Run メソッドを使うのも手です。
http://msdn.microsoft.com/ja-jp/library/cc364421.aspx

WshShell.Run の場合、Shell 関数と比較して、
  ・実行可能ファイル(EXE等)だけでなく、文書ファイル(XLS等)も呼び出せる。
  ・起動したアプリが終了するまで待機させるかどうかを選択できる。
といった利点があります。


> 先のタスク スケジューラに登録する方法の場合
こちらは、コマンドラインからの指定もできます。(Schtasks.exe、at.exe)
http://support.microsoft.com/kb/814596/ja
http://technet.microsoft.com/ja-jp/library/cc748967.aspx

編集 削除
りーどオンリー  2009-06-10 00:37:58  No: 142034  IP: 192.*.*.*

>初めての質問に対してことばの揚げ足とは....
>ちょっと残念ですね。

これについて、その他大勢のReadOnlyMemberがどのように感じるかわかりますか?

編集 削除
 2009-06-30 16:13:40  No: 142035  IP: 192.*.*.*

>後出しジャンケン・・・
>アホw
プライドが傷ついたのでしょうか?決してあなたを馬鹿にしているのではないことは、文面からも感じ取れると思います。
文字だけのコミュニケーションは、本当に難しいです。
本来、非言語的な要素が会話のほとんどを占めており、言葉がはたす役割は
ほんの少しでしかないのですから。
そのノンバーバルな部分を読み取ることがこうした文字だけの会話ではなかなか難しいのです。
要は、ポジティブにものごとを考えることが大切だと思います。
もちろんこれは自分自身にも言い聞かせています。

編集 削除
かかりいん  2009-06-30 20:51:09  No: 142036  IP: 192.*.*.*

巧 さんって誰?
このスレッドの主(質問者)は  lasyu  さんと名乗っているんですが・・
わざわざ他人の弁護を買って出たの?

編集 削除