97/10/21 pm 22:50
う〜む、IShellFolderの実装の仕方がよくわからん。サンプルも見当たらんし、いったいどうすりゃいいんぢゃい。
そもそも、なんでこんな得体の知れない、実装方法もよくわからんインタフェースを書かねばならないか、というと、米政府が、暗号化アルゴリズムは輸出してはならん、などというからだ。普段のオレなら、あぁそうかい、まぁがんばってくれたまえ、くらいで気にもしないんだが、今回ばかりは知らん顔もしてられなくなっちまったぜ。
ちょうど今、取り掛かり始めた製品が、ずばりその暗号化アルゴリズムを持っている製品なんだよな。まぁ、オレは暗号化したり、解読したりするアルゴリズム自体には興味ないし、オレの担当でもないんだが、問題は日本向けや韓国向けの製品をどうするか、ってぇことになると、なんか考えなくてはいかん。暗号化エンジンがそのまま出せないとすると、つまるところ、仕向地ですでに出ているエンジンをライブラリなどの形でライセンスを受けて使いまわすしかなかろう。
こういうのを実現するには、まずはユーザ・インタフェースを受け持つGUIの部分と、実際に暗号化したり復元したりするエンジン部分は、結合が緩やかなら緩やかなほどいい。こうしときゃあ、例えばクライアントではGUI部分だけを受け持たせ、エンジン部分をサーバに置いて、汎用の暗号化&復元サーバなんてのを立てることもできよう。クライアント側も、どうせGUIしか持たないなら、なにもわざわざC++なんかで書かずJavaで書けば、WintelのみならずMacでもunixでも動くのができるだろう。まぁ実装方法うんぬん以前に、ネットワークにまたがった暗号化&復元クライアント・サーバというものに、意味があるかどうかわからんがね(^-^;)
あらためて書くまでもなく、こんなこたぁ基本中の基本だろうと思うのだが、そうも言ってられないんだよなぁ。元にしようと期待して、長い間バージョンアップされずにいる現行バージョンのソースを見てみたら、もうネチョネチョのグチョグチョ。C++で書いてあるのはいいんだが、ロクにわかってないヤツが書いたみたいで、得体の知れないゴミのようなDLLが山ほどある。ほとんど意味のない妙なクラスを山のように定義し、継承し、そのくせ、GUI部とエンジン部は癒着し尽くしていて、こりゃもう捨てるしかないということになった。
MFCなんぞ使うからこんなことになるんだ。だいたい、MFCなんてもんは、WORDとかEXCELを手間暇かけずに作るためのもんで、ちっとも汎用じゃねぇし。んでもって、作ったはいいが、得体の知れないバグが鬼のように継承されてしまうだろうが。Office97の有り様を見ろ。オレにはこれでもプログラマの良心があるから、あんな製品は出せぬ。ドキュメント・ビュー構造なんぞに用はないので、今回もMFCなんぞ使わないで書こう。
てなわけで、GUI部とエンジン部のインタフェースはどうやって規定するか、ということなんだが、OLEにするらしい。なんだかなぁ。新しく、この製品のプロダクト・マネージャになったヤツが、熱意があるのはいいんだが、どうにも聞きかじり魔王みたいで、ActiveXで、とかCOMで、とか、どっかでパクッてきたリクツを力説するが、中身がねぇぞ。大丈夫かぁ〜。まぁこれは言ってみれば、プロダクト・マネージャという人種に共通するアビリティなんで、きっとヤツもうまくやっていくだろう。
で、今オレがプロトタイプとして実装しているのが、仮想フォルダというヤツだ。IShellFolderインタフェースを実装して書くんだが、なかなかにしてめんどくさい&わかりにくい。仮想フォルダってのはどんなんか、というと、ごみ箱とかマイコンピュータみたいなヤツだ。
デスクトップに忽然と現れて、エクスプローラでも中身を見ることができるが、実際のファイルシステムとはなんら関係がないという、得体の知れないオブジェクト。あれを実装したいんだよな。ショートカットじゃなくって、実際のオブジェクトをデスクトップに置きたいのさ。デスクトップのゴミ箱にドラッグ&ドロップすると、ちゃんと削除されるでしょ?でもって、いかにもゴミ箱に入っているように見えはするが、実際にはファイルシステムから切り離され、拡張されたシェルのnamespaceに登録されてるだけだ。
このカラクリを次の暗号化ソフトのインタフェースに使いたいんだよなぁ。ファイルを持ってって、ポンと放すと、暗号化したり復元したりするという、ね。でもって、さんざ苦労してIClassFactory、IShellFolder、IEnumIDListなどを実装して見た。なんか手元にロクなサンプルもなかったし、ドキュメント類も、IShellFolderを実装しているオブジェクトの使い方はよく見かけるんだが、肝心な実装の仕方そのものに触れているものがなくって、試行錯誤してしまったぜ。ひょっとしてInside
OLE2とかに出てるのかなぁ?オレ、持ってこなかったんだよ。
オレって才能ねぇな〜、とか思いながら、なんとかデスクトップにアイコンを出させて、中身をエクスプローラで見ることはできるようになった。ここまでできれば、あとはドラッグ&ドロップを実装すればいろんなことに応用できるだろう。アイコンの上にファイルを落としたら、ftpで送っちゃうとか、smtpで投げちゃうとか、base64やiso-2022-jpにエンコードしちゃうとかさ。こういったフィルタ的なものはなんでも適用できるぞ。わはは。どうでもいいようなウンチなツール類を山のようにデスクトップに置いて遊ぼう(^-^)
とかいって、楽勝楽勝と思ってドラッグ&ドロップを実装したっけ、ちっとも動かん。ひ〜、オレってほんと、才能ないのね。しかも、変にデスクトップに登録されちゃうもんだから、真っ先にメモリに読み込まれて居座ってしまい、MSDEVでオンラインデバッグができぬわ。どないしょ。ソフトアイスしかないか。う〜む、しかしアレは奥の手だ。あんまり使いたくない。まずは普通のEXEでInProcServerを書こう。GPFにならないで、黙ってちゃんと動くヤツを。でもってそれを仮想フォルダにマージしよう。はぁ。進まねぇ。
メール | 前へ | 次へ | 戻る |