魔改造版Win2000でXPのタスクマネージャを動かすには?
魔改造版 Windows 2000 で XPのタスクマネージャーを動かすと、ネットワークタブが使えるようになります。
しかし…
システムトレイが大惨事になります
これ実は、SHELL32.dll の Shell_NotifyIconW で使われるNOTIFYICONDATA
構造体の問題なんです
Windows XP版の taskmgr.exe では 0x3b8、2000版では 0x3a8 のサイズです
V2 専用 dwInfoFlags Long
V3 専用 guidItem GUID
V4 専用 hBalloonIcon Long
88 NOTIFYICONDATA _V1_SIZEA
488 NOTIFYICONDATA _V2_SIZEA
504 NOTIFYICONDATA _V3_SIZEA
508 NOTIFYICONDATA _V4_SIZEA
188 NOTIFYICONDATA _V1_SIZEW
936 NOTIFYICONDATA _V2_SIZEW
952 NOTIFYICONDATA _V3_SIZEW
956 NOTIFYICONDATA _V4_SIZEW
0x3b8 = 952 なので NOTIFYICONDATA _V3_SIZEW になっていて、 Windows 2000には対応していないわけです。
guidItem
Type: GUID
Windows XP and later.
となっていますね
続く構造体は
hBalloonIcon
Type: HICON
Windows Vista and later.
だそうです。
とりあえず、バイナリエディタで3か所書き換えてみたところ・・・
ちゃんと動くようになりました!
・ω・ って訳で、 shell32.dll にちょっと手直しが必要だということが判明
今後直す予定だよ!
Comments