アプリ版:「スタンプのみでお礼する」機能のリリースについて

ウィンドウを持たないプロセスをスケジューラなどで周期的に起動するようなやり方で、二重起動チェック後、二重起動されていたら前回起動されたプロセスを強制終了させるやり方を教えてください。
過去ログを見てもそれらしいものは見当たりませんでした。

A 回答 (3件)

現在動いているProcessを列挙する事はAPIで可能です。

CreateToolHelp32SnapShotなどで
プロセスを列挙し、OpenProcessでハンドルを取得する事はできます。
またその際PROCESSENTRY32構造体の中の情報からスケジューラが起動したものなのか
どうかの判断ができるかもしれません。

無理なら、外部的にスケジューラを監視する必要があります。
その場合はMessageのやりとりなどをおっていくしかありません。
    • good
    • 0
この回答へのお礼

度々ご回答ありがとうございます。
何やら、面倒なようですね。
とりあえず試してみます。(試験的にTerminateProcessを使ったサンプルを作ってみましたがうまく行きませんでした...)
最悪、できない場合はダミーのフォームを作ってPostMessageで終了させるようにしてみます。

ありがとうございました。

お礼日時:2002/12/21 17:46

はあ、、


CreateProcessで起動してハンドルを保持しておけば、前回起動したものかどうか管理できると思いますが。
    • good
    • 0
この回答へのお礼

すみません、質問でも記述しているとおり、システムの構成上タスクスケジューラ等から起動され、起動時のハンドル等は残せないのです。
(アプリから起動させればいいのでしょうが、その部分は変更できないのです。)
何かいい方法はないものでしょうか...

お礼日時:2002/12/20 23:09

TerminateProcessというAPIがあるので調べてみてください。


ただ強制終了させるわけですからメモリリークが発生する可能性が
あります。
    • good
    • 0
この回答へのお礼

はあ、「TerminateProcess」がカギとは思っていたんですが、前回起動したプロセスかどうかの判断で悩んでいます。

お礼日時:2002/12/19 17:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!