アーカイブ

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

エクスプローラの起動を感知し、なるべくその瞬間に捕縛して子ウィンドウにすることで、
捕縛前のエクスプローラを画面に表示させないようにしていたのだが、
どうもその瞬間に処理するのは危ないようで、エクスプローラが起動し終わってから捕縛する仕様にした。
よって、一瞬エクスプローラが表示され、それが消えて、再び子ウィンドウで表示されるようになり、
見た目はあまりよろしくない。
しかしこれによって、捕縛時のクラッシュ問題は解決した。
捕縛したエクスプローラがたまに描画をサボる問題は、WS_CLIPCHILDRENで解決した。
これで致命的な問題は解決済みで、少なくともXPでは裏エクスプローラより便利なくらいになった。
Vistaではまだ不便なところもあるが、どうせ解決できないエクスプローラの仕様とかは無視すると、
もう後は手を加えることもあるまい。
多くを望むようなソフトでもないし、こんなもんで十分だろう。

これで、毎日使ってる自作ソフト三つのうち、二つはC♯に移行した。
両方とも違う理由だが、現在のところDelphiでは作れないという点は同じだ。
唯一Delphiで作ってるのは真魚だが、真魚と一緒に動作するAdMenuはDelphiじゃダメ。
いままでずっとDelphiを使ってきたのは、Delphiで何でも作れたからだったが、
Vistaとか64bitとかのせいで、最近はDelphiで作れないものが増えてきたな。
C♯は好きだけど.NETはあまり好きじゃないし、.NETでも作れない物や不便はあるのだが、
現状、Delphiで作れないものを作るのに使ってるから認めざるを得ない。
やっぱりもう一度、.NETのテキストエディタ作るかなぁ。

XPとVistaではエクスプローラの挙動がだいぶ違うようだ。
64bit版Vistaでの動作を大前提としながら、32bit版XPでも動作させたいので、
日中は事務所のXPで、夜は自宅のVistaで動作を検証し、
事務所からも自宅からもアップロードし、昨日一日だけで軽く10回以上は更新した。
その更新内容など。

裏エクスプローラには、エクスプローラを起動して新規タブにするという機能がついていたが、
これをタブマンコでやった時が落ちやすく、OSごと固まりやすい。
それ以外でも固まる現象が起っているが、最も固まるのはその場合なので、
今のところ、エクスプローラを起動するという機能は無効化している。
しかし、あたしは裏エクスプローラのタブの余白をダブルクリックして新規タブという操作に慣れているので、
この機能はどうにかして、クラッシュを避けて実装したい。
根本的な解決はまだだ。

VC++で作ったDLLは、当初、サイズが8KBくらいで、VC++ランタイムが必要だったのだが、
サイズが40KBくらいでランタイム不要にする方法がわかったのでそうした。
MFCを使わなければランタイムも不要だと思っていたら、ランタイムが入ってない環境で動かなかったので、
プロジェクトオプションを調べて、怪しいと思った所をググって辿り着いた。
ただでさえ.NETランタイムが必要なのに、VC++ランタイムまで入れなきゃ動かないって、手間かかりすぎ。
高機能なファイラの操作を覚えるのが面倒な人のための、簡単なタブ式エクスプローラのはずが、
導入でつまずくような面倒な状態では意味がない。

アプリケーション名はタブマンコに決めたが、画面にマンコという文字が表示されると結構困るので、
なるべくどこにもアプリケーション名を表示させない仕様にした。
隠しウィンドウのタイトルバーにかろうじて残してあるので、詳しい人なら見つけることは出来るって程度。
どうしても名前が必要な場所には「タブ式エクスプローラ」としか表示されない。

なぜかReleaseビルドがVistaで動作しない。
Debugビルドは動くので、このプロジェクトは常にデバッグ版で。
最適化がグローバルフックと相性が悪いんだろうか。

まだまだ問題は山積みだが、そのOSを巻き込むという最悪の問題点さえ解決出来れば、
裏エクスプローラより便利になりそうな気がする。
Vistaではどうしようもない問題が多いけど、特にXPでは今までより便利になりそう。