◆山あり谷ありってなわけで,片っ端からバグ叩きした
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 は,
バージョン情報の正式なファイル名のところに
COMMCTRL.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