; ; Кодировка сценария UTF-8 with BOM !!! ; Unicode true !define MUI_COMPONENTSPAGE_NODESC !include MUI2.nsh !include LogicLib.nsh Name "Unicode_tooltips" OutFile "ToolTips4U.exe" XPStyle on !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_LANGUAGE English Section Foo SID_FOO SectionEnd Section Bar SID_BAR SectionEnd Section Baz SID_BAZ SectionEnd var ttip !define WS_POPUP 0x80000000 !define TTF_SUBCLASS 0x010 !define /math TTM_ACTIVATE ${WM_USER} + 1 !define /math TTM_ADDTOOLW ${WM_USER} + 50 !define /math TTM_SETTOOLINFOW ${WM_USER} + 54 !define /math TTM_TRACKACTIVATE ${WM_USER} + 17 !define /math TTM_TRACKPOSITION ${WM_USER} + 18 !define /math TTM_POP ${WM_USER} + 28 !define /math TTM_POPUP ${WM_USER} + 34 Function .onMouseOverSection ${If} $0 = -1 killtip: SendMessage $ttip ${TTM_ACTIVATE} 0 0 Return ${EndIf} StrCpy $2 "" ${If} $ttip = 0 System::Call 'USER32::CreateWindowEx(i${WS_EX_TOPMOST},t"tooltips_class32",i,i${WS_POPUP},i,i,i,i,i0,i,i,i)i.r2' StrCpy $ttip $2 ${EndIf} StrCpy $1 "" ${Select} $0 ${Case} ${SID_FOO} StrCpy $1 "Основной модуль программы (超级链接)" ${Case} ${SID_BAR} StrCpy $1 "Компоненты программы (访问我的博客)" ${Case} ${SID_BAZ} StrCpy $1 "Дополнительные инструменты" ${EndSelect} FindWindow $3 "#32770" "" $HWNDPARENT System::Call '*(i44,i${TTF_SUBCLASS},i$3,i0x678,i,i,i,i,i0,tr1,i0)i.r1' SendMessage $2 ${TTM_ADDTOOLW} 0 $1 SendMessage $ttip ${TTM_SETTOOLINFOW} 0 $1 SendMessage $ttip ${TTM_ACTIVATE} 1 0 SendMessage $ttip ${TTM_TRACKACTIVATE} 1 $1 System::Free $1 ${If} $2 <> 0 ;BUGFIX: Sometimes we get an initial onMouseOverSection call with no place to show a tip System::Call 'USER32::IsWindowVisible(ir3)i.r0' ${IfThen} $0 = 0 ${|} goto killtip ${|} ${EndIf} FunctionEnd