アーカイブ

2008年 7月 2日 のアーカイブ

自宅のVistaが問題なのだが、とりあえず事務所のXPで物色。

高機能なものは要らない。
逆に使い方がわからないとストレスを感じるので、タブ化しただけのエクスプローラ程度が良い。
いや、エクスプローラそのもののタブ化がベスト。
なのだが、このジャンルはどうしても高機能とか高効率とかを求めがちなようで、難しそうなのばっかりだ。
とりあえず、教えて君.netに掲載されていたまめFileというのを試してみた。

ダウンロードして解凍したら、実行ファイルがたくさんあって、どれを起動して良いか勘ではわからず、
しかたなくReadMeを読むことにした。
とりあえずインストーラーを起動すれば良いらしく、これで本体へのショートカットが出来た。
初回起動時、各種設定を簡単に一括で終わらせちゃおうという配慮で、
標準エクスプローラに近い設定で動作するという選択肢があったのが嬉しい。
ファイラにしろブラウザにしろテキストエディタにしろ、標準でないものは、
ユーザーが何も設定しない限り、なるべくOS標準のと同じ動作をしてくれると慣れやすい。
これはなかなかいいかなと思った。
まだまだ何かと設定が必要なようで、たくさん問いかけがあったのだが、
面倒くさすぎて、何も読まずにドンドンOKを押して進む。

ようやく起動した。
エクスプローラの代替ソフトとしては十分な印象。
ただし、色盲のあたしには、ファイルの色分けがわかりづらくて逆効果。
色の設定も含めて、他にも多少はカスタマイズしないといけないようで、オプションを開くと、
設定項目が多すぎて挫折した。
挫折したので、色も含めて一切カスタマイズしないで、慣れる方向でいく。
ちょっと使ってみて、エクスプローラ互換に設定した割にはあまり互換じゃないなという感想。

まめFileには関連付けを行うインストーラがついてくるので、これでフォルダに関連付けしてしまい、
フォルダをダブルクリックした時は必ずまめFileが起動するようにしたのだが、
解凍ソフトが解凍を終えた時に自動でフォルダを開くという動作や、
真魚で親フォルダを開くという選択をした時は、まだエクスプローラが起動してしまう。
エクスプローラのかわりに関連付けしたファイラを開いてくれない。
レジストリで探すと、HKEY_CLASSES_ROOT¥Folder¥shellが該当箇所のようだが、
そこを直接いじったり再起動したりしても、どうしてもエクスプローラが起動してしまう。
真魚での対応はどうにでもなるのだが、よその人が作った解凍ソフトの中身はいじれない。
これじゃ非標準のファイラを使う意味がない。

別のファイラなら、もっと強引な関連付けで、解凍ソフトからも開けるかも知れない。
そういうつもりで、もう一つだけ、X-Finderというのも試してみた。
残念ながらフォルダへの関連付けに関するオプションは見あたらない。
が、解凍ソフトがエクスプローラを開いてしまったあと、まるでそのエクスプローラを取り込むかのように、
同じ場所を開く機能がついていたので、まめFileよりはこっちの方がいいってことで乗り換え。
使ってみると、まめFileよりエクスプローラに近いようで親しみやすい。
今日のところはとりあえずこれだ。

真魚やエロペガと同様に、自分で毎日使ってる自作ソフトで、裏エクスプローラというのがある。
グローバルフックという手法で標準のエクスプローラを捕まえて、タブ式にしてしまおうというもの。
同じコンセプトで親エクスプローラというのも作ったのだが、親も裏も完全に思い通りには動作せず、
親よりは裏の方が、少しは理想に近い動作をするということで、裏の方をずっと使い続けてきた。

自宅のPCでは、64bit版Vistaを入れているわけだが、別にVistaが好きで使ってるわけじゃなく、
嫌いだけどVistaを知るためにVistaを使っているわけで、嫌いなVistaを好きにカスタマイズするのではなく、
なるべく標準の状態で使わないと、今あえてVistaを使ってみている意味もなくなる。
だから、自宅のPCはあえて、裏エクスプローラを使わないで、標準のエクスプローラに慣れようとした。
だが、そろそろ標準にも慣れたし、それでも裏エクスプローラが必要だと感じ、遂に自宅でも使ってみた。

ところが、裏エクスプローラの起動は出来ているのに、エクスプローラの捕獲だけうまく行かない。
そこから紆余曲折あったのだが、どうやら、64bitアプリの捕獲だけがうまく行ってないようだ。
調べてみると、エクスプローラや64bit版IEにはグローバルフックが反応せず、
その他のアプリにはXPまでと同様に反応しているので、きっとそういうことだろう。
つーことは、64bitで裏エクスプローラを作り直せば、64bitアプリだけに反応するものが作れるだろうと予想。
ということで戦いは始まった。

裏エクスプローラはDelphi製だが、Delphiはまだ64bitに対応していない。
次回のバージョンアップではユニコード対応を予定しているが、64bit対応はさらにその先だ。
そんなもんは待ってられないので、Delphiで作る言う方向はナシ。

C♯で作れないかとググってみたら、.NETでグローバルフックは使えない事らしい。
グローバルフックにはアンマネージDLLとEXEが必要で、アンマネージDLLを作る事が出来ないんだと。
じゃぁDLLだけDelphiで作り、EXEをC♯で作ればいい。
つーことで、裏エクスプローラに使っているDLLをC♯アプリのEXEで呼び出すことは成功した。
ただし、C♯アプリを32bitでビルドした場合だけだ。
64bitでビルドした場合は、やはりDLLも64bitにする必要があるのか、全く動作しない。

64bitでDLLを作るということで、DelphiコードをVC++に移植した。
移植したものをまずは32bitでビルドし、裏エクスプローラのDLLと交換してみたら、これはうまく動作した。
しかし、64bitでビルドして、C♯の64bitビルドと組み合わせると全然動作しない。
C++もC♯も、32bitを64bitに変更しただけなのだが、それじゃダメらしい。

つーことで今はお手上げ状態。
C++で64bitのDLLを作る際に注意する点でもあるのか、
それともC♯の方に問題があるのか、そもそも64bit化すれば本当にうまく行くのかもわからない。
夢中になりすぎて寝不足なので、この件は健康を考えて、あまりのめり込まないようにしたい。
グローバルフックを追いかけること自体をもうやめるべきかも。

そこでさらに話が続く。
どうせVistaのエクスプローラは嫌いなので、他の最初からタブ式なファイラーを使う方が便利かも。
今までもタブ式ファイラーは作ろうと計画していたわけだが、
XPまでのエクスプローラは使いやすいし、しかもDelphiがユニコード対応していない事もあって、
自作のファイラーを作るよりは、標準のエクスプローラを捕まえた方が圧倒的に良かった。
しかし64bit版Vistaでは、エクスプローラの捕獲が出来ないし、エクスプローラ自体が不便だし、
作っても良いかなと思い始めている。
既に存在しているファイラーを探して使う事も含めて検討。