Windows 2000にEnableBalloonTips などない
Twitter のはてなBotで Windows2000のタスクトレイのBalloon ToolTipsをオフにする方法はありますか?間接的な回避策でもかまいません。 こういうものがあったので、ちょっと調べてみました。
まず、XPやVistaのVersion 6.00以上の Comctl32.dllは レジストリ HKEY_CURRENT_USER 下
\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced のEnableBalloonTips を読み込んで変数に保存する。なお、キーが存在しない場合はデフォルトで1になっている。
lea eax,[ebp-00000200h] push eax push L771F2170 push ebx push ebx push SWC77161B60_EnableBalloonTips push [ebp-000001FCh] mov dword ptr [ebp-00000200h],00000004h call [ADVAPI32.dll!RegQueryValueExW] push [ebp-000001FCh] call [ADVAPI32.dll!RegCloseKey] L7716711C: push ebx |
ところが、Windows 2000に搭載されている5.81と XPの 5.82の Comctl32.dllには該当する処理が無いのです。
だから、Windows 2000でレジストリを設定すればいいと書いてるサイトは間違っています。
まず、Balloon Tipsを表示する処理をリバースエンジニアリングしてみました。
こちらはXP。
SUB_L771DF8DD: mov edi,edi push ebp mov ebp,esp sub esp,0000003Ch push esi mov esi,[ebp+08h] push edi xor edi,edi cmp [L771F2170],edi jnz L771DF8FE ←フラグの判定で終了 test byte ptr [esi+0Ch],40h jnz L771DFB72 L771DF8FE: mov eax,[esi+0Ch] shr eax,05h not eax and eax,00000001h cmp [esi+000000A4h],edi mov [ebp-08h],edi mov [ebp+08h],edi mov [ebp-0Ch],eax jnz L771DF921 mov eax,000007D0h jmp L771DF927 L771DF921: call [KERNEL32.dll!GetTickCount] |
最初の処理で、変数の値をチェックしています。
んでこちらが、ComCtl32.dll ver 5.82
SUB_L5ABB410E: mov edi,edi push ebp mov ebp,esp sub esp,00000038h push esi mov esi,[ebp+08h] push edi push esi call SUB_L5ABB40E3 test byte ptr [esi+44h],01h mov edi,eax mov [ebp-08h],edi jz L5ABB4145 test edi,edi jz L5ABB4136 ←エラー時 cmp word ptr [edi],0000h jnz L5ABB4167 L5ABB4136: push esi call SUB_L5AB6A8AB and dword ptr [esi+44h],FFFFFFFEh jmp L5ABB43B8 ←終了処理 |
SUB_L7175E4E0 のエラー処理で、関数スキップしている以外は、全て実行になっています。
と言うわけで、バルーンチップを無効にするために、
必ず L5ABB4136に飛ぶように変更します。
こちらが改造ファイル
Download: DisCmCtl.zip Language: Multilingual Description: comctl32.dll customized with disable balloon tips Author: Customized by BlackWingCat based comctl32.dll 5.8.2900.5512 |
インストールは WINNTにコピーするだけして、HKLM\SYSTEM\CurrentControlSet\Control\Session Manager の SafeDllSearchMode を 0にしてから(KDWでEz KD レジストリにチェックを入れれば自動で入ります)再起動すればOKです。
アンインストールはコピーしたファイルをExplorer終了後に削除するか、レジストリを元に戻せばよいです。
関連記事:
Windows2000のタスクトレイのBalloon ToolTipsをオフにする方法はありますか?間接的な回避策でもかまいません。 - 人力検索はてな
MSDN:バルーン ポップアップを抑制する
JSI Tip 4669. How do I disable Windows 2000 balloon tips?
Comments