[BlueLeaf1336]> PROBLEMS> RecentApps>

RecentApps > 今度こそアプリケーションの起動終了を監視

historyTOP

2005/02/21:作成
2005/02/26:更新
2005/02/27:更新
2005/02/28:更新
2005/03/02:更新

2005/02/21TOP

タイトルどおりです。

軽く復習しておくと、現在できているのは

だけです。さて、ウィンドウの生成の瞬間には、ウィンドウハンドルをもらうこともできています。で、Windowsにおいては、ウィンドウハンドルさえわかれば芋づる式に、なんでもかんでも引きずり出せる、ような感じがします。

このページでは、ウィンドウハンドルをみて、(1)それがアプリケーションの最初のウィンドウであること、(2)そのウィンドウの持ち主であるアプリケーションの所在地(フルパス)を探り当てること、を目的とします。目的とするといっても、どちらも(自分にとって)既知の方法を当てはめるだけです。

まず、「アプリケーションの最初のウィンドウであること」については

に、もろにその方法(ただし、アプリケーションの最初のウィンドウであるかどうかは実は多分不明です。でも近似値としては充分かと)が記載されています。

また、ウィンドウの持ち主であるアプリケーションのパスについては、このサイト内に答えがあります。

現在、CBTフックを使っているんですが、とにかくすごい量のウィンドウが作られ捨てられています。この量を減らすためにも、最初に一つ目っぽいウィンドウの絞込みから行います。

...というわけで、

20050221RecentApps.zip(222,584bytes)(22,401bytes)

この時点で、確実にWindowsNT系のOSでしか動作しなくなりました。SDKにそう書いてあるAPIを使用しているためです。ウィンドウハンドル > プロセスID > プロセスハンドル > モジュールのフルパス、という流れで処理しています。

そんな問題でもないぐらいに不備が見えてきましたが、今日は遅いのでここまでにします。また、当初の目的は果たしたようですので、こんなもんで終わります。

2005/02/26TOP

試行錯誤中です。前回の最後に書いた問題点とは、同一のアプリが何度も起動された場合(エディタなどなんぼでも起動します)に、パスとデータの1レベルで管理していると対処できないという点です。書きにくいので端折りますが。

でまあ、現時点では、全く駄目駄目ですが、感じ的には少し前に進んだようです。方針としては、(NT系限定ですが)

というわけで、しばらく沈黙することになります。ただし、参考にしたサイトを記録していきます。

20050226RecentApps.zip(260,252bytes)(32,840bytes)

こんな感じになってます。

使い勝手は最悪で、作った本人しかわからないと思います。もちろん今のところだけであって欲しいものです。ただ、このまま放っておくと自分でもわからなくなる可能性があるので、少しだけ説明を書いておきます。

  1. CBTフックを使用しているので、EXEと「hook.dll」は同一のフォルダに置くこと。
  2. 起動するとタスクトレイに引っ込む。ウィンドウの作成を監視しつづけてます。
  3. タスクトレイのアイコンをクリックするなり右クリックメニューなりで、ランチャー画面を表示する。
  4. それまでに溜め込んだ(溜め込むことができた)全てのアプリケーションの一覧が表示される。
  5. タイトル行をクリックすると昇順/降順を切り替えてソートできる。大体で。
  6. 一覧を選択した状態でダブルクリックするとそれが開く。
  7. 一覧右クリックでいくつかメニューが開く。
  8. 一覧は、タスクトレイアイコンをクリックした時点のスナップショットのため、表示したままでは更新されない。画面を更新したい場合は、再度タスクトレイアイコンをクリックする。
  9. データは、アプリケーションの置いてあるフォルダに、iniファイルとして保持される。適当。
  10. 最後の起動日時・起動回数・起動時間合計を表示しようとたくらんでいるが、数字が滅茶苦茶怪しい。どうみても...な感じ。ただし、起動日時はそこそこそれっぽくなっている。

いくらでも気になる箇所はあるんですが、とりあえずプロトタイプっぽいものができたような感じがしています。とりあえずここまで。

2005/02/27TOP

作りこむ前に、少しずつコードの整理などを行います。といいながら、機能追加してみたり。

途中公開。20050227RecentApps.zip(281,764bytes)(33,256bytes)

2005/02/28TOP

作業中。20050228RecentApps.zip(281,960bytes)(33,468bytes)

2005/03/02TOP

20050302RecentApps.zip(262,593bytes)

EOFTOP