・ファイル連続実行アプリの新版「ExecS0.1.2.02」を公開しました。2009/09/14 11:39

本体のダウンロードはこちら
マニュアルはこちら
サポート掲示板は当面こちら

「ExecS」を公開するにあたって、他の人に使ってもらうのに恥ずかしくないものになるよう結構がんばった。その結果自分のやろうとしていたことは98%は実現できた。そして最後まで解決できなかったのが、
「ExecSが立ち上げるのと同じアプリが別に立ち上がっていてはいけない」
という制限だ。

これは終了条件が「CPU低負荷」の時だけの制限で、VBの「パフォーマンスカウンタ」という機能を使っていたことによるもの。
というのも、パフォーマンスカウンタを使って立ち上がっているアプリのCPU使用率を取得しようとしたときに同じアプリが複数立ち上がっていると、その区別をつけることができないのだ。

そんなはずはないだろうとネット検索したり、MSDNを調べたり、試行錯誤してみたりしたのだが、どうしても解決できない。パフォーマンスカウンタでアプリを指定するときに、アプリの名前でしか指定できないので、同じ名前のアプリは区別がつけられないのが原因。実際には、アプリの名前の後に#0,#1,#2...というような連番をつければ区別できるが、ひとつが終了すると連番が振りなおされるので、ExecSの立ち上げたのが何番目なのかがわからなくなってしまうのだ。

普通に考えると、プロセスIDとかウィンドウハンドルとかで指定できそうなものだが、何故かできないんだなあ。(T_T)

延べで2-3日悩んだあげく、結局あきらめて0.1.1.16を公開したのだが、.NET Frameworkのリファレンスを眺めていたら解決策が閃いた。酢こんぶは「CPU使用率」を監視することにこだわっていたので、パフォーマンスカウンタのリファレンスだけを詳細に見ていた。しかし実はパフォーマンスカウンタを使わずに、自分で立ち上げたプロセスの「CPU使用時間」を取得する方法があったのだ。

酢こんぶの目的からして「CPU使用率」でも「CPU使用時間」でも大きな違いはなく、むしろ他のアプリとの相対値ではない「CPU使用時間」を使う方が好都合。しかもこの方法は自分で立ち上げたアプリを完全に特定できる!

というわけで、CPU負荷低の基準としてCPU使用時間を使うことにしたのが今回の新版。これでやりたかったことはすべて実装できたので、あとは細かなバグ取りと、何か要望があれば取り入れていく方向で。

------------------------------------------
このブログの本店「木全屋かるた堂」もよろしくです。

・ファーストガンダムのかるた売ってます。
・ファイル整理に便利な自作ツール置いてます。
・写真(コスプレ、ポートレート、動物)公開してます。
------------------------------------------

コメント

_ 木全直弘 ― 2009/09/15 06:31

> これでやりたかったことはすべて実装できた

 ひとまず、完成おめでとー!

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
このブログはxxの思考錯誤日記です。
xxの部分をお答えください。

コメント:

トラックバック

このエントリのトラックバックURL: http://karutadou.asablo.jp/blog/2009/09/14/4578999/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。