[BlueLeaf1336]> PROBLEMS> RecentApps>
history | TOP |
2005/02/21:作成
2005/02/26:更新
2005/02/27:更新
2005/02/28:更新
2005/03/02:更新
2005/02/21 | TOP |
タイトルどおりです。
軽く復習しておくと、現在できているのは
だけです。さて、ウィンドウの生成の瞬間には、ウィンドウハンドルをもらうこともできています。で、Windowsにおいては、ウィンドウハンドルさえわかれば芋づる式に、なんでもかんでも引きずり出せる、ような感じがします。
このページでは、ウィンドウハンドルをみて、(1)それがアプリケーションの最初のウィンドウであること、(2)そのウィンドウの持ち主であるアプリケーションの所在地(フルパス)を探り当てること、を目的とします。目的とするといっても、どちらも(自分にとって)既知の方法を当てはめるだけです。
まず、「アプリケーションの最初のウィンドウであること」については
に、もろにその方法(ただし、アプリケーションの最初のウィンドウであるかどうかは実は多分不明です。でも近似値としては充分かと)が記載されています。
また、ウィンドウの持ち主であるアプリケーションのパスについては、このサイト内に答えがあります。
現在、CBTフックを使っているんですが、とにかくすごい量のウィンドウが作られ捨てられています。この量を減らすためにも、最初に一つ目っぽいウィンドウの絞込みから行います。
...というわけで、
20050221RecentApps.zip(222,584bytes)(22,401bytes)
この時点で、確実にWindowsNT系のOSでしか動作しなくなりました。SDKにそう書いてあるAPIを使用しているためです。ウィンドウハンドル > プロセスID > プロセスハンドル > モジュールのフルパス、という流れで処理しています。
そんな問題でもないぐらいに不備が見えてきましたが、今日は遅いのでここまでにします。また、当初の目的は果たしたようですので、こんなもんで終わります。
2005/02/26 | TOP |
試行錯誤中です。前回の最後に書いた問題点とは、同一のアプリが何度も起動された場合(エディタなどなんぼでも起動します)に、パスとデータの1レベルで管理していると対処できないという点です。書きにくいので端折りますが。
でまあ、現時点では、全く駄目駄目ですが、感じ的には少し前に進んだようです。方針としては、(NT系限定ですが)
というわけで、しばらく沈黙することになります。ただし、参考にしたサイトを記録していきます。
20050226RecentApps.zip(260,252bytes)(32,840bytes)
こんな感じになってます。
使い勝手は最悪で、作った本人しかわからないと思います。もちろん今のところだけであって欲しいものです。ただ、このまま放っておくと自分でもわからなくなる可能性があるので、少しだけ説明を書いておきます。
いくらでも気になる箇所はあるんですが、とりあえずプロトタイプっぽいものができたような感じがしています。とりあえずここまで。
2005/02/27 | TOP |
作りこむ前に、少しずつコードの整理などを行います。といいながら、機能追加してみたり。
途中公開。20050227RecentApps.zip(281,764bytes)(33,256bytes)
2005/02/28 | TOP |
作業中。20050228RecentApps.zip(281,960bytes)(33,468bytes)
2005/03/02 | TOP |
20050302RecentApps.zip(262,593bytes)
EOF | TOP |