走れTpVer 
山あり谷ありってなわけで,片っ端からバグ叩きした TpVer 。
今度こそ,今度こそ,の願いも虚しく,ボロボロと崩れてたり(笑)

OS とブラウザ判定だけにしておけばいいものを,
ちょっとやってみようと思った,のバージョン取得。
これが,またもや,罠(笑)

COMCTL32.DLL ,--- 名前は聞いたこと有るかと思う。
これのバージョンが低かったりすると,
ツールバーの表示がおかしくなったりするので,重要なファクターとして,
ユーザーがそれも明記したいと思ったら出来る様にしてたのだ。

で,COMCTL32.DLL ってどこにあるかというと,
C:\WINDOWS\SYSTEM\ ←ここね。
各種 DLL が,どば〜っと入っている SYSTEM フォルダ。
だから,パスは,C:\WINDOWS\SYSTEM\ となるわけだけど,
これは,DOS/V での話。
そう,PC-98 だと,ドライブは C: ではなく A: 。
ただし,HSP には便利なものが用意されていて,
Windows がインストールされているディレクトリパスをとってくる
windir という命令があるのだ♪
なので,どんな状態であろうとも,COMCTL32.DLL の位置が絶対に判る。
ふっ(笑)
まっかせなさい☆(←ばかばか)。

そんなわけで,ユーザーにわざわざパスを書いてもらわなくても,
こっちでちゃんと調べられるようになってた,はず,なのである(笑)

ところがまず,第一段階のつまずきは,
Windows2000 をつかっている人から「COMCTL32.DLL」の値,
取得できてませ〜んと(爆笑)
なんでぢゃぁ,と思ったけど,理由も書いていてくださった。
「SYSTEM フォルダを探しに行っているみたいですけど,
 NT 系では COMCTL32.DLL は SYSTEM32 フォルダにあります
# すみません,T さん,ソースまでみていただいて(汗)

げぅ(涙)
違うのかよぉ,場所が
9x 系と NT 系で,探しに行くフォルダの名前は変えないと駄目なんだなぁ。
じゃ,OS の判定…どうやって…,ああ,そうだ(笑)
Internet Explorer の判定のところで,振り分けてるじゃないか。
そこで,フラグ立てとけば OK だっっ。
つまり,Internet Explorer の判定の時に,NT 系の処理に飛んでたら,
ここを通ってきましたよ(=OS は NT 系ですよ)となるわけで,
利用できるんでないかい?(笑)

で,ここは難なくクリア。
神は私の味方だ(爆笑)(←ばかばかパート2)。

でも賢明な読者の方はもうおわかりですよね。
えぇ,これだけで済むと思ったら大間違いってやつでして,
COMCTL32.DLL の苦難が,まだ待ち受けてました(汗)

TpVer を動かした人からのご報告。
COMCTL32.DLL が入ってない場合に,COMMCTRL.DLL を探しにいっているのは正しい挙動ですか?

(爆笑)

まってちょーだい,まってちょーだい(笑)
いつから,PC は,そんな風に気を利かせるようになったんでぃっっ(爆笑)

それは全然正しい挙動ではありません!!(汗)
ちゅーかなんでそんなことに??
判らない,どーも判らない。
なんたって,COMCTL32.DLL を探しに行ってるのは「決め打ち」だ。
(だいたい COMCTL32.DLL と COMMCTRL.DLL の関係も判らんし)。
なのになんでそんな風に違うものを探しに行ったんだ?> TpVer よ

うーん。

さらに調べてもらったところ,実は COMCTL32.DLL は,SYSTEMフォルダの中に在ったらしい。
ってことは,COMCTL32.DLL を探しに行っているのにもかかわらず,
COMMCTRL.DLL を見つけてきてる
???

浮気者め!!(違

もー,どーなってんだか全然判らないまま,
うーうーうなっているところへ,
H さんからの有り難い投稿がっっ!
曰く

えっと,一部のバージョンの COMCTL32.DLL は,
バージョン情報の正式なファイル名のところに
COM
MCTRL.DLL と書いてあるそうです.




…(ふるふるふる…←怒りに震えている)

なんやとぉおお !?
COMCTL32.DLL のクセに COMMCTRL.DLL と名乗ってるだああっっ !?
ゆるすまじ!
打倒
撲滅!(爆笑)

いやー,まいりました。
TpVer のやってる挙動は,ある意味正しかったんです。
COMCTL32.DLL を探しに行く→見つける→バージョン情報を見る
→ COMMCTRL.DLL と書いてある→表示。

えぇ,合ってますとも!!(爆笑)

合ってるんだけども,こっちから見てみると,
まさか名前がすり替わってるなんて思ってないから,
てっきり COMMCTRL.DLL を探しに行ったんだと思うじゃないですか(笑)
疑ってすまん,TpVer よっ,
私を殴ってくれ〜ってな感じで。
# 「走れ TpVer」(爆笑)

とにかく,これで原因がはっきりしました。
よーするに,初期バージョンの COMCTL32.DLL ,キミです,原因は!!

とりあえず,原因が判れば,対処は簡単。
COMCTL32.DLL を探しに行く→見つける→バージョン情報を見る
→ COMMCTRL.DLL と書いてある→ COMCTL32.DLL に名前を直して表示

です(怒

ちゅことで,この問題は CLEAR 。
さて,そろそろ終盤にさしかかってきたか TpVer !

と思っても,いーえ,まだまだ茨の道は続くのであった(涙)


本日の感想 つきあってられません(涙)<Windows

May 29, 2001