局域网使用工具NSIS脚本

!addplugindir "ResPlugins"
#!define NSIS_VERSION_NEW ;;makensis.exe 2.21以后版本请去掉注释。
!include "LanInfoManager.nsh"
!define MUI_ICON "${RES_ICON}"
!define MUI_UI "${RES_UI}"
Name ${STR_NAME}
Caption "${STR_CAPTION}"
OutFile ${STR_OUTFILE}
CRCCheck off
!insertmacro MUI_LANGUAGE "${STR_MUI_LANG}"
VIProductVersion "${STR_VERSION}"
VIAddVersionKey /LANG=${LANG_ID} "ProductName" "${STR_PRODCTNAME}"
VIAddVersionKey /LANG=${LANG_ID} "Comments" "${STR_COMMENTS}"
VIAddVersionKey /LANG=${LANG_ID} "CompanyName" "${STR_COMPANYNAME}"
VIAddVersionKey /LANG=${LANG_ID} "LegalCopyright" "${STR_COPYRIGHT}"
VIAddVersionKey /LANG=${LANG_ID} "FileDescription" "${STR_FILEDESCRIPTION}"
VIAddVersionKey /LANG=${LANG_ID} "FileVersion" "${STR_FILEVERSION}"
VIAddVersionKey /LANG=${LANG_ID} "InternalName" "${STR_INTNAME}"
VIAddVersionKey /LANG=${LANG_ID} "OriginalFilename" "${STR_OUTFILE}"
Page custom ShowCustom LeaveCustom
Page instfiles ;;可有可无...
!macro AddHostNum ARG_Delta
IntOp $COUNTER_HOSTNUM $COUNTER_HOSTNUM + ${ARG_Delta}
!macroend
!macro EnableGlobalBtn ARG_Var.hwnd ARG_Flag
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_CHANGE_IP}" "HWND"
ShowWindow ${ARG_Var.hwnd} ${ARG_Flag}
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_CHANGE_MAC}" "HWND"
ShowWindow ${ARG_Var.hwnd} ${ARG_Flag}
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_MINIMIZE}" "HWND"
ShowWindow ${ARG_Var.hwnd} ${ARG_Flag}
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_RF_CONNECTION}" "HWND"
ShowWindow ${ARG_Var.hwnd} ${ARG_Flag}
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${LAB_HELP}" "HWND"
ShowWindow ${ARG_Var.hwnd} 0
${if} ${ARG_Flag} == 0
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${GB_GLOBAL}" "HWND"
SendMessage ${ARG_Var.hwnd} ${WM_SETTEXT} 0 "STR:${STR_NOTEPAD}" ;;更改标签字符
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND"
ShowWindow ${ARG_Var.hwnd} 1
${else}
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${GB_GLOBAL}" "HWND"
SendMessage ${ARG_Var.hwnd} ${WM_SETTEXT} 0 "STR:全局操作" ;;更改标签字符
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND"
ShowWindow ${ARG_Var.hwnd} 1
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND"
ShowWindow ${ARG_Var.hwnd} 0
${endif}
!macroend
!macro EnableTXTEdit ARG_Var.hwnd ARG_Flag
EnableWindow $HWND_TXT_HOST ${ARG_Flag}
EnableWindow $HWND_TXT_MAC ${ARG_Flag}
EnableWindow $HWND_TXT_IP ${ARG_Flag}
EnableWindow $HWND_TXT_MASK ${ARG_Flag}
EnableWindow $HWND_TXT_NETGATE ${ARG_Flag}
EnableWindow $HWND_TXT_DNS ${ARG_Flag}
${if} ${ARG_Flag} == 0
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${LAB_SCALE}" "HWND"
ShowWindow ${ARG_Var.hwnd} 0
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${LAB_AUTHOR}" "HWND"
ShowWindow ${ARG_Var.hwnd} 0
SetCtlColors ${ARG_Var.hwnd} 0x333333 transparent
SendMessage ${ARG_Var.hwnd} ${WM_SETTEXT} 0 "STR:${STR_AUTHOR}"
ShowWindow ${ARG_Var.hwnd} 1
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_NEW_HOST}" "HWND"
EnableWindow ${ARG_Var.hwnd} 1
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_EDIT_HOST}" "HWND"
EnableWindow ${ARG_Var.hwnd} 1
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_ADD}" "HWND"
ShowWindow ${ARG_Var.hwnd} 0
EnableWindow ${ARG_Var.hwnd} 0
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_UPDATE}" "HWND"
ShowWindow ${ARG_Var.hwnd} 0
EnableWindow ${ARG_Var.hwnd} 0
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_DELETE}" "HWND"
ShowWindow ${ARG_Var.hwnd} 0
EnableWindow ${ARG_Var.hwnd} 0
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND" ;;可用下拉主机列表
EnableWindow ${ARG_Var.hwnd} 1
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_EXPORT_HOSTLIST}" "HWND"
WriteINIStr "${MUI_INIFILE}" "Field ${BTN_EXPORT_HOSTLIST}" "Text" "备份主机列表(&S)"
SendMessage ${ARG_Var.hwnd} ${WM_SETTEXT} 0 "STR:备份主机列表(&S)"
${else}
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${LAB_SCALE}" "HWND"
ShowWindow ${ARG_Var.hwnd} 1
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${LAB_AUTHOR}" "HWND"
ShowWindow ${ARG_Var.hwnd} 0
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_NEW_HOST}" "HWND"
EnableWindow ${ARG_Var.hwnd} 0
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_EDIT_HOST}" "HWND"
EnableWindow ${ARG_Var.hwnd} 0
ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND" ;;禁用下拉主机列表
EnableWindow ${ARG_Var.hwnd} 0
${endif}
!macroend
!macro ShowReg2Txt ARG_Var.1 ARG_Var.2 ARG_Var.3
${if} $COUNTER_HOSTNUM >= 1 ;有主机信息
ReadINIStr ${ARG_Var.1} "${MUI_INIFILE}" "Field ${DL_HOST}" "State"
SendMessage $HWND_TXT_HOST ${WM_SETTEXT} 0 "STR:${ARG_Var.1}"
ReadRegStr ${ARG_Var.2} HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "MAC"
${if} ${ARG_Var.2} == ""
${orif} ${ARG_Var.2} == ${STR_UNSETTED}
StrCpy ${ARG_Var.2} "${STR_UNSETTED}"
${else}
StrLen ${ARG_Var.3} "${ARG_Var.2}"
${if} ${ARG_Var.3} != 12
StrCpy ${ARG_Var.2} "${STR_ERRORFORMAT}"
${endif}
${endif}
SendMessage $HWND_TXT_MAC ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"
ReadRegStr ${ARG_Var.2} HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "IP"
${if} ${ARG_Var.2} == ""
StrCpy ${ARG_Var.2} "${STR_UNSETTED}"
${endif}
SendMessage $HWND_TXT_IP ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"
ReadRegStr ${ARG_Var.2} HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "MASK"
${if} ${ARG_Var.2} == ""
StrCpy ${ARG_Var.2} "${STR_UNSETTED}"
${endif}
SendMessage $HWND_TXT_MASK ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"
ReadRegStr ${ARG_Var.2} HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "NETGATE"
${if} ${ARG_Var.2} == ""
StrCpy ${ARG_Var.2} "${STR_UNSETTED}"
${endif}
SendMessage $HWND_TXT_NETGATE ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"
ReadRegStr ${ARG_Var.2} HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "DNS"
${if} ${ARG_Var.2} == ""
StrCpy ${ARG_Var.2} "${STR_UNSETTED}"
${endif}
SendMessage $HWND_TXT_DNS ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"
${else} ;无主机信息
ReadRegStr ${ARG_Var.2} HKLM "${REG_WINLOGON}" "AltDefaultDomainName"
SendMessage $HWND_TXT_HOST ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"
ReadINIStr ${ARG_Var.1} ${MUI_INIFILE} "Field ${DL_NETCARD}" State
ReadINIStr ${ARG_Var.2} ${MUI_INIFILE} "${ARG_Var.1}" "MAC"
SendMessage $HWND_TXT_MAC ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"
ReadINIStr ${ARG_Var.2} ${MUI_INIFILE} "${ARG_Var.1}" "IP"
SendMessage $HWND_TXT_IP ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"
ReadINIStr ${ARG_Var.2} ${MUI_INIFILE} "${ARG_Var.1}" "MASK"
SendMessage $HWND_TXT_MASK ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"
ReadINIStr ${ARG_Var.2} ${MUI_INIFILE} "${ARG_Var.1}" "NETGATE"
SendMessage $HWND_TXT_NETGATE ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"
ReadINIStr ${ARG_Var.2} ${MUI_INIFILE} "${ARG_Var.1}" "DNS"
SendMessage $HWND_TXT_DNS ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"
${endif}
${if} $COUNTER_HOSTNUM < 1 ;无主机列表信息
SendMessage $HWND_GB_SELHOST ${WM_SETTEXT} 0 "STR:选择主机 ( 无主机信息 )"
${else} ;;显示主机个数
SendMessage $HWND_GB_SELHOST ${WM_SETTEXT} 0 "STR:选择主机 ( 当前共 $COUNTER_HOSTNUM 个主机信息 )"
${endif}
!macroend
!macro SaveTxt2Reg ARG_Var.1 ARG_Var.2 ARG_Var.3
WriteRegStr HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "" "Setted"
WriteINIStr ${MUI_INIFILE} "Field ${TXT_HOST}" State ${ARG_Var.1}
ReadINIStr ${ARG_Var.2} "${MUI_INIFILE}" "Field ${TXT_MAC}" "State"
StrCpy ${ARG_Var.3} "${ARG_Var.2}"
${if} ${ARG_Var.2} == ""
${orif} ${ARG_Var.2} == "${STR_UNSETTED}"
StrCpy ${ARG_Var.2} ""
StrCpy ${ARG_Var.3} "${STR_UNSETTED}"
${else}
StrLen ${ARG_Var.3} "${ARG_Var.2}"
${if} ${ARG_Var.3} != 12
StrCpy ${ARG_Var.3} "${STR_ERRORFORMAT}"
${else}
StrCpy ${ARG_Var.3} ${ARG_Var.2}
${endif}
${endif}
SendMessage $HWND_TXT_MAC ${WM_SETTEXT} 0 "STR:${ARG_Var.3}"
WriteRegStr HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "MAC" "${ARG_Var.2}"
ReadINIStr ${ARG_Var.2} "${MUI_INIFILE}" "Field ${TXT_IP}" "State"
StrCpy ${ARG_Var.3} "${ARG_Var.2}"
${if} ${ARG_Var.2} == ""
${orif} ${ARG_Var.2} == "${STR_UNSETTED}"
StrCpy ${ARG_Var.3} ${STR_UNSETTED}
StrCpy ${ARG_Var.2} ""
${endif}
SendMessage $HWND_TXT_IP ${WM_SETTEXT} 0 "STR:${ARG_Var.3}"
WriteRegStr HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "IP" ${ARG_Var.2}
ReadINIStr ${ARG_Var.2} "${MUI_INIFILE}" "Field ${TXT_MASK}" "State"
StrCpy ${ARG_Var.3} "${ARG_Var.2}"
${if} ${ARG_Var.2} == ""
${orif} ${ARG_Var.2} == "${STR_UNSETTED}"
StrCpy ${ARG_Var.3} ${STR_UNSETTED}
StrCpy ${ARG_Var.2} ""
${endif}
SendMessage $HWND_TXT_MASK ${WM_SETTEXT} 0 "STR:${ARG_Var.3}"
WriteRegStr HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "MASK" ${ARG_Var.2}
ReadINIStr ${ARG_Var.2} "${MUI_INIFILE}" "Field ${TXT_NETGATE}" "State"
StrCpy ${ARG_Var.3} "${ARG_Var.2}"
${if} ${ARG_Var.2} == ""
${orif} ${ARG_Var.2} == "${STR_UNSETTED}"
StrCpy ${ARG_Var.3} ${STR_UNSETTED}
StrCpy ${ARG_Var.2} ""
${endif}
SendMessage $HWND_TXT_NETGATE ${WM_SETTEXT} 0 "STR:${ARG_Var.3}"
WriteRegStr HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "NETGATE" ${ARG_Var.2}
ReadINIStr ${ARG_Var.2} "${MUI_INIFILE}" "Field ${TXT_DNS}" "State"
StrCpy ${ARG_Var.3} "${ARG_Var.2}"
${if} ${ARG_Var.2} == ""
${orif} ${ARG_Var.2} == "${STR_UNSETTED}"
StrCpy ${ARG_Var.3} ${STR_UNSETTED}
StrCpy ${ARG_Var.2} ""
${endif}
SendMessage $HWND_TXT_DNS ${WM_SETTEXT} 0 "STR:${ARG_Var.3}"
WriteRegStr HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "DNS" ${ARG_Var.2}
!macroend
!macro SetOneInfoTXT ARG_Var.temp ARG_Syb.hwnd ARG_Str.Mgs
ReadINIStr ${ARG_Var.temp} "${MUI_INIFILE}" "Field ${${ARG_Syb.hwnd}}" "State"
${if} ${ARG_Var.temp} == "${STR_UNSETTED}"
${orif} ${ARG_Var.temp} == ""
System::Call 'user32::MessageBeep(i) i (0x00000000)'
MessageBox::show MB_ICONHAND|MB_TOPMOST "信息不全" "$SYSDIRShell32.dll,200"
"无法更改 TCP/IP 配置,请你完整填写 [${ARG_Str.Mgs}] 信息。 "
"好的 (&O)"
Pop $R0
EnableWindow $HWND_${ARG_Syb.hwnd} 1
SendMessage $HWND_${ARG_Syb.hwnd} ${WM_SETTEXT} 0 "STR:"
System::Call "user32::SetFocus(i $HWND_${ARG_Syb.hwnd})i"
ReadINIStr ${ARG_Var.temp} "${MUI_INIFILE}" "Field ${LAB_AUTHOR}" "HWND"
ShowWindow ${ARG_Var.temp} 0
SetCtlColors ${ARG_Var.temp} 0xD95200 transparent
SendMessage ${ARG_Var.temp} ${WM_SETTEXT} 0 "STR:填写${ARG_Str.Mgs}"
ShowWindow ${ARG_Var.temp} 1
ReadINIStr ${ARG_Var.temp} "${MUI_INIFILE}" "Field ${BTN_UPDATE}" "HWND"
;; 显示[更新主机]
EnableWindow ${ARG_Var.temp} 1
ShowWindow ${ARG_Var.temp} 1
Abort
${endif}
!macroend
!macro CovertTxt4Edit ARG_Var.temp
ReadINIStr ${ARG_Var.temp} "${MUI_INIFILE}" "Field ${TXT_MAC}" "State"
${if} ${ARG_Var.temp} == "${STR_UNSETTED}"
SendMessage $HWND_TXT_MAC ${WM_SETTEXT} 0 "STR:"
${orif} ${ARG_Var.temp} == "${STR_ERRORFORMAT}"
ReadINIStr ${ARG_Var.temp} "${MUI_INIFILE}" "Field ${DL_HOST}" "State"
ReadRegStr ${ARG_Var.temp} HKLM "${REG_ME_HOSTLIST}${ARG_Var.temp}" "MAC"
SendMessage $HWND_TXT_MAC ${WM_SETTEXT} 0 "STR:${ARG_Var.temp}"
SendMessage $HWND_TXT_MAC ${EM_SETSEL} 255 0
System::Call "user32::SetFocus(i $HWND_TXT_MAC)i" ;;设置焦点
${endif}
ReadINIStr ${ARG_Var.temp} "${MUI_INIFILE}" "Field ${TXT_IP}" "State"
${if} ${ARG_Var.temp} == "${STR_UNSETTED}"
SendMessage $HWND_TXT_IP ${WM_SETTEXT} 0 "STR:"
${endif}
ReadINIStr ${ARG_Var.temp} "${MUI_INIFILE}" "Field ${TXT_MASK}" "State"
${if} ${ARG_Var.temp} == "${STR_UNSETTED}"
SendMessage $HWND_TXT_MASK ${WM_SETTEXT} 0 "STR:"
${endif}
ReadINIStr ${ARG_Var.temp} "${MUI_INIFILE}" "Field ${TXT_NETGATE}" "State"
${if} ${ARG_Var.temp} == "${STR_UNSETTED}"
SendMessage $HWND_TXT_NETGATE ${WM_SETTEXT} 0 "STR:"
${endif}
ReadINIStr ${ARG_Var.temp} "${MUI_INIFILE}" "Field ${TXT_DNS}" "State"
${if} ${ARG_Var.temp} == "${STR_UNSETTED}"
SendMessage $HWND_TXT_DNS ${WM_SETTEXT} 0 "STR:"
${endif}
!macroend
!macro ShowNotePad ARG_Var.1 ARG_Var.2
ReadINIStr ${ARG_Var.1} "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND"
ReadINIStr ${ARG_Var.2} "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "State"
${if} ${ARG_Var.2} == ""
SendMessage ${ARG_Var.1} ${WM_SETTEXT} 0 "STR:${STR_NOTEPAD_HELP}"
SendMessage ${ARG_Var.1} ${EM_SETSEL} 255 0
${endif}
ShowWindow ${ARG_Var.1} 1
System::Call "user32::SetFocus(i ${ARG_Var.1})i" ;;设置焦点
ReadINIStr ${ARG_Var.1} "${MUI_INIFILE}" "Field ${GB_GLOBAL}" "HWND"
SendMessage ${ARG_Var.1} ${WM_SETTEXT} 0 "STR:${STR_NOTEPAD}" ;;更改标签字符
!macroend
###############
# 入口初始化函数...
###############
Function .onInit
;; 窗体互斥处理...
SYSTEM::Call "kernel32::CreateMutexA(i 0, i 0, t '${STR_CAPTION}') i .r0 ?e"
Pop $0
${if} $0 != 0
StrLen $0 "${STR_CAPTION}"
IntOp $0 $0 + 1
loop:
FindWindow $1 '#32770' '' 0 $1
${if} $1 != 0
SYSTEM::Call "user32::GetWindowText(i r1, t .r2, i r0) i."
StrCmp $2 "${STR_CAPTION}" 0 loop
SYSTEM::Call "user32::SetForegroundWindow(i r1) i."
${endif}
ShowWindow $1 2
ShowWindow $1 1
Abort
${endif}
;;---------------------
InitPluginsDir
ClearErrors
ReadRegStr $R0 HKLM "SOFTWAREMicrosoftWindows NTCurrentVersion" CurrentVersion
IfErrors 0 Pass
System::Call 'user32::MessageBeep(i) i (0x00000110)'
Messagebox::show MB_ICONHAND|MB_TOPMOST "LanInfoMan" "0,103"
"您的 Windows 版本过低,本工具只运行于 Win2000以上的 Windows 平台中。 "
"确定 (&O)"
Pop $R0
Quit
Pass:
${Var} COUNTER_HOSTNUM
StrCpy $COUNTER_HOSTNUM 0 ;;初始化主机计数器
File /oname=${MUI_INIFILE} "${RES_INIFILE}"
File /oname=${MUI_ICOFILE} "${RES_ICOFILE}"
WriteINIStr "${MUI_INIFILE}" "Field ${LAB_AUTHOR}" "Text" "${STR_AUTHOR}"
WriteINIStr "${MUI_INIFILE}" "Field ${ICON_HOST}" "Text" "${MUI_ICOFILE}"
;;------------------------------------
ReadRegStr $R0 HKCR "Hlbackupini.file" ""
${if} $R0 != "主机列表备份文件"
WriteRegStr HKCR ".hlbf" "" "Hlbackupini.file"
WriteRegStr HKCR "Hlbackupini.file" "" "主机列表备份文件"
WriteRegStr HKCR "Hlbackupini.fileDefaultIcon" "" "$SYSDIRShell32.dll,-178"
WriteRegStr HKCR "Hlbackupini.fileshellopen" "" ""
WriteRegStr HKCR "Hlbackupini.fileshellopencommand" ""
"$"$PROGRAMFILESWindows NTAccessorieswordpad.exe$" $"%1$""
System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)'
${endif}
;;------------------------------------
Call GetNetCardsInfo
Call InitNetCardInfo
ReadINIStr $0 ${MUI_INIFILE} "Settings" NetCardNum
${if} $0 <= 0
System::Call 'user32::MessageBeep(i) i (0x00000110)'
Messagebox::show MB_ICONHAND|MB_TOPMOST "LanInfoMan" "0,103"
"没有检测到本机的活动网卡信息,请检查网卡是否正确安装。 "
" 我晕 (&F) "
Quit
${endif}
ReadRegStr $0 HKLM "${REG_ME}Settings" "NetCardSelected"
ClearErrors
ReadINIStr $1 ${MUI_INIFILE} "$0" "IP"
IfErrors +2
WriteINIStr "${MUI_INIFILE}" "Field ${DL_NETCARD}" "State" "$0"
Call InitHostList
Call InitLastHostInfo
WriteINIStr "${MUI_INIFILE}" "Field ${LAB_HELP}" "Text" "${STR_START_HELP}"
FunctionEnd
Function ShowCustom
InstallOptions::initDialog /NOUNLOAD "${MUI_INIFILE}"
Pop $0 ;IO页面窗体句柄
${Var} HWND_TXT_HOST
${Var} HWND_TXT_MAC
${Var} HWND_TXT_IP
${Var} HWND_TXT_MASK
${Var} HWND_TXT_NETGATE
${Var} HWND_TXT_DNS
${Var} HWND_GB_SELHOST
ReadINIStr $HWND_TXT_HOST "${MUI_INIFILE}" "Field ${TXT_HOST}" "HWND"
ReadINIStr $HWND_TXT_MAC "${MUI_INIFILE}" "Field ${TXT_MAC}" "HWND"
ReadINIStr $HWND_TXT_IP "${MUI_INIFILE}" "Field ${TXT_IP}" "HWND"
ReadINIStr $HWND_TXT_MASK "${MUI_INIFILE}" "Field ${TXT_MASK}" "HWND"
ReadINIStr $HWND_TXT_NETGATE "${MUI_INIFILE}" "Field ${TXT_NETGATE}" "HWND"
ReadINIStr $HWND_TXT_DNS "${MUI_INIFILE}" "Field ${TXT_DNS}" "HWND"
ReadINIStr $HWND_GB_SELHOST "${MUI_INIFILE}" "Field ${GB_SELHOST}" "HWND"
ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND"
SetCtlColors $2 0x808080 0xFEFEFE
!insertmacro EnableTXTEdit $2 0
${if} $COUNTER_HOSTNUM > 0
!insertmacro EnableGlobalBtn $2 1
${else}
!insertmacro EnableGlobalBtn $2 0
ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND"
ShowWindow $2 0
ReadINIStr $2 "${MUI_INIFILE}" "Field ${GB_GLOBAL}" "HWND"
SendMessage $2 ${WM_SETTEXT} 0 "STR:帮助信息"
ReadINIStr $2 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"
EnableWindow $2 0
ReadINIStr $2 "${MUI_INIFILE}" "Field ${LAB_HELP}" "HWND"
ShowWindow $2 1
SetCtlColors $2 0x6C6C6C transparent
;CreateFont $1 "Arial" "8" "700"
;SendMessage $2 ${WM_SETFONT} $1 0
${endif}
!insertmacro EditCtrStyle $HWND_TXT_MAC ${UPPERCASE}
CreateFont $0 "宋体" "9"
SendMessage $HWND_TXT_MAC ${WM_SETFONT} $0 0
InstallOptions::show
Pop $0
FunctionEnd
Function LeaveCustom
ReadINIStr $0 "${MUI_INIFILE}" "Settings" "State"
${Switch} $0
##############################################################
${Case} ${DL_NETCARD}
;MessageBox MB_OK "DL_NETCARD" # 按下 [选择网卡] 下拉列表
##############################################################
ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_NETCARD}" "State"
WriteRegStr HKLM "${REG_ME}Settings" "NetCardSelected" $1
!insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框
${if} $COUNTER_HOSTNUM > 0
!insertmacro EnableGlobalBtn $2 1
${else}
!insertmacro EnableGlobalBtn $2 0
ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND"
ShowWindow $2 0
ReadINIStr $2 "${MUI_INIFILE}" "Field ${GB_GLOBAL}" "HWND"
SendMessage $2 ${WM_SETTEXT} 0 "STR:帮助信息"
ReadINIStr $2 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"
EnableWindow $2 0
ReadINIStr $2 "${MUI_INIFILE}" "Field ${LAB_HELP}" "HWND"
ShowWindow $2 1
SetCtlColors $2 0x6C6C6C transparent
;CreateFont $1 "Arial" "8" "700"
;SendMessage $2 ${WM_SETFONT} $1 0
${endif}
!insertmacro ShowReg2Txt $1 $2 $3
${Break}
##############################################################
${Case} ${DL_HOST}
;MessageBox MB_OK "DL_HOST" # 按下 [主机标识] 下拉列表
##############################################################
ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "State"
WriteRegStr HKLM "${REG_ME_HOSTLIST}" "LastHost" "$1"
!insertmacro EnableGlobalBtn $2 1
!insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框
!insertmacro ShowReg2Txt $1 $2 $3
${Break}
##############################################################
${Case} ${BTN_EDIT_HOST}
;MessageBox MB_OK "BTN_EDIT_HOST" # 按下 [编辑] 按钮
##############################################################
ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_EXPORT_HOSTLIST}" "HWND"
WriteINIStr "${MUI_INIFILE}" "Field ${BTN_EXPORT_HOSTLIST}" "Text" "放弃编辑主机(&C)"
SendMessage $2 ${WM_SETTEXT} 0 "STR:放弃编辑主机(&C)"
!insertmacro ShowNotePad $2 $1
!insertmacro EnableGlobalBtn $2 0 ;;隐藏全局操作按钮区-->显示临时编辑帮助区
!insertmacro EnableTXTEdit $2 1 ;;可用编辑文本框
!insertmacro CovertTxt4Edit $2 ;---检测转化文本字符显示
ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_ADD}" "HWND"
;;隐藏[添加到主机列表]
ShowWindow $2 0
ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_UPDATE}" "HWND"
;; 可用[更新主机]
EnableWindow $2 1
ShowWindow $2 1
ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_DELETE}" "HWND"
;; 可用[删除主机]
ShowWindow $2 1
${if} $COUNTER_HOSTNUM > 0 ;有主机信息
EnableWindow $2 1
${else}
EnableWindow $2 0
${endif}
Abort
${Break} ;; :)
##############################################################
${Case} ${BTN_NEW_HOST}
;MessageBox MB_OK "BTN_NEW_HOST" # 按下 [新建] 按钮
##############################################################
ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_EXPORT_HOSTLIST}" "HWND"
WriteINIStr "${MUI_INIFILE}" "Field ${BTN_EXPORT_HOSTLIST}" "Text" "放弃新建主机(&C)"
SendMessage $2 ${WM_SETTEXT} 0 "STR:放弃新建主机(&C)"
SendMessage $HWND_TXT_HOST ${WM_SETTEXT} 0 "STR:"
SendMessage $HWND_TXT_MAC ${WM_SETTEXT} 0 "STR:"
SendMessage $HWND_TXT_IP ${WM_SETTEXT} 0 "STR:"
ReadINIStr $4 ${MUI_INIFILE} "Field ${DL_NETCARD}" State
ReadINIStr $3 ${MUI_INIFILE} "$4" "IP"
StrCpy $1 "${STR_NOTEPAD_HELP}$r$n可能有用的参考信息:$t IP 地址:$3$r$n"
StrCpy $3 $3 -3
SendMessage $HWND_TXT_IP ${WM_SETTEXT} 0 "STR:$3"
ReadINIStr $3 ${MUI_INIFILE} "$4" "MASK"
SendMessage $HWND_TXT_MASK ${WM_SETTEXT} 0 "STR:$3"
StrCpy $1 "$1子网掩码:$3"
ReadINIStr $3 ${MUI_INIFILE} "$4" "NETGATE"
SendMessage $HWND_TXT_NETGATE ${WM_SETTEXT} 0 "STR:$3"
StrCpy $1 "$1 默认网关:$3"
ReadINIStr $3 ${MUI_INIFILE} "$4" "DNS"
SendMessage $HWND_TXT_DNS ${WM_SETTEXT} 0 "STR:$3"
StrCpy $1 "$1 首选DNS :$3"
;MessageBox MB_OK "$1"
ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "State"
${if} $2 == "${STR_NOTEPAD_HELP}"
${orif} $2 == ""
ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND"
;SendMessage $2 ${WM_SETTEXT} 0 "STR:${STR_NOTEPAD_HELP}$r$n$r$n$1$r$n"
SendMessage $2 ${WM_SETTEXT} 0 "STR:$1"
;SendMessage $2 ${EM_SETSEL} 255 0
${endif}
ShowWindow $2 1
ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_UPDATE}" "HWND"
;; 隐藏[更新主机]
ShowWindow $2 0
EnableWindow $2 0
ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_DELETE}" "HWND"
;; 隐藏[删除主机]
ShowWindow $2 0
EnableWindow $2 0
ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_ADD}" "HWND"
;; 显示[添加到主机列表]
ShowWindow $2 1
EnableWindow $2 1
!insertmacro EnableTXTEdit $2 1 ;;可用编辑文本框
!insertmacro EnableGlobalBtn $2 0 ;;隐藏全局操作按钮区-->显示临时编辑帮助区
System::Call "user32::SetFocus(i $HWND_TXT_HOST)i" ;;设置焦点
Abort ;${Break}
${Break}
##############################################################
${Case} ${BTN_IMPORT_HOSTLIST}
;MessageBox MB_OK "BTN_IMPORT_HOSTLIST" # 按下 [导入备份列表] 按钮
##############################################################
${Do}
;FindWindow $4 '#32770' '${STR_CAPTION}'
;ShowWindow $4 0
Dialogs::Open "${STR_OPEN_FILE_EXT}" 1 "${STR_OPEN_CAPTION}" $EXEDIR ${VAR_OPENSAVE_ID}
${if} ${VAR_OPENSAVE} == 0
${ExitDo}
${else}
System::Call 'kernel32::_lopen(t "${VAR_OPENSAVE}", i 0) i .r1'
System::Call 'kernel32::GetFileSize(i $1, i) i .r2'
IntOp $2 $2 / 1024
System::Call 'kernel32::_lclose(i $1) i'
${if} $2 < 512
ReadINIStr $1 ${VAR_OPENSAVE} "Main" "Type"
${if} $1 == "HostList Backup File"
System::Call 'user32::MessageBeep(i) i (0x00000000)'
Messagebox::show MB_DEFBUTTON2|MB_TOPMOST "导入确认"
"$SYSDIRShell32.dll,146"
"你确定要从备份文件 $"${VAR_OPENSAVE}$" 中导入主机列表吗? "
"确定 (&Y)" "不要 (&N)"
Pop $R0
${if} $R0 != "1"
Abort
${endif}
Call ImprotHostlist2Reg
;ShowWindow $4 1
Pop $2 ;;返回导入主机数
${if} $2 > 0 ;;导入了新主机
!insertmacro EnableGlobalBtn $2 1
!insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框
ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"
EnableWindow $1 1
SendMessage $1 ${CB_SHOWDROPDOWN} 1 1
${endif}
;;开始转化导入
${ExitDo}
${endif}
${endif}
System::Call 'user32::MessageBeep(i) i (0x00000101)'
Messagebox::show MB_ICONHAND|MB_TOPMOST "添加到主机列表" "$SYSDIRShell32.dll,200"
"${MSG_OPEN_ERROR} "
"确定 (&O)"
Pop $R0
${endif}
${Loop}
!insertmacro ShowReg2Txt $1 $2 $3
${Break}
##############################################################
${Case} ${BTN_EXPORT_HOSTLIST}
;MessageBox MB_OK "BTN_EXPORT_HOSTLIST" # 按下 [备份主机列表] 按钮
##############################################################
ReadINIStr $4 "${MUI_INIFILE}" "Field ${BTN_EXPORT_HOSTLIST}" Text
StrCpy $4 "$4" 4
${if} $4 == "放弃"
!insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框
${if} $COUNTER_HOSTNUM < 1
ReadINIStr $2 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"
EnableWindow $2 0
ReadINIStr $2 "${MUI_INIFILE}" "Field ${GB_GLOBAL}" "HWND"
SendMessage $2 ${WM_SETTEXT} 0 "STR:帮助信息"
ReadINIStr $2 "${MUI_INIFILE}" "Field ${LAB_HELP}" "HWND"
ShowWindow $2 1
SetCtlColors $2 0x004040 transparent
ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND"
ShowWindow $2 0
${else}
!insertmacro EnableGlobalBtn $2 1
${endif}
${else}
${if} $COUNTER_HOSTNUM < 1
System::Call 'user32::MessageBeep(i) i (0x00000001)'
MessageBox::show MB_ICONHAND|MB_TOPMOST "备份主机列表" "$SYSDIRshell32.dll,234"
"当前没有任何主机信息,无需备份。 "
"确定 (&O)"
Pop $R0
Abort
${endif}
FindWindow $4 '#32770' '${STR_CAPTION}'
Dialogs::Save "${STR_SAVE_FILE_EXT}" 1 "${STR_SAVE_CAPTION}" $EXEDIR ${VAR_OPENSAVE_ID}
${if} ${VAR_OPENSAVE} == 0
Abort
${else}
StrCpy $1 "${VAR_OPENSAVE}" "" -5
StrCpy $2 $1 "" -4
${if} $2 == ".reg"
ExecWait `"$WINDIRRegedit.exe" /s /e "${VAR_OPENSAVE}" "${REG_ME_HOSTLIST_FULL}"`
ShowWindow $4 0
System::Call 'user32::MessageBeep(i) i (0x00000001)'
MessageBox::show MB_ICONHAND|MB_TOPMOST "备份为REG格式" "$SYSDIRshell32.dll,178"
"已成功将当前列表中共 $COUNTER_HOSTNUM 个主机信息备份到指定的注册表文件中。 "
"确定 (&O)"
Pop $R0
ShowWindow $4 1
Abort
${else}
${if} $1 != ".hlbf"
StrCpy ${VAR_OPENSAVE} "${VAR_OPENSAVE}.hlbf"
${endif}
ShowWindow $4 0
Call SaveHostlist2INI
System::Call 'user32::MessageBeep(i) i (0x00000001)'
MessageBox::show MB_ICONHAND|MB_TOPMOST "备份完成" "$SYSDIRshell32.dll,178"
"已成功将当前列表中共 $COUNTER_HOSTNUM 个主机信息保存到指定的文件中。 "
"确定 (&O)"
Pop $R0
ShowWindow $4 1
${endif}
${endif}
${endif}
;ShowWindow $1 1
!insertmacro ShowReg2Txt $1 $2 $3
${Break}
##############################################################
${Case} ${BTN_DELETE}
;MessageBox MB_OK "BTN_DELETE" # 按下 [删除主机] 按钮
##############################################################
ReadINIStr $3 "${MUI_INIFILE}" "Field ${DL_HOST}" "State"
System::Call 'user32::MessageBeep(i) i (0x00000000)'
MessageBox::show MB_ICONHAND|MB_TOPMOST "删除确认" "$SYSDIRShell32.dll,33"
"你确定删除主机标识 $3 对应的主机信息吗? "
"确定 (&O)" "取消 (&C)"
Pop $R0
${if} $R0 != 1
Abort
${endif}
DeleteRegKey HKLM "${REG_ME_HOSTLIST}$3"
DeleteRegValue HKLM "${REG_ME_HOSTLIST}" "LastHost"
!insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框
ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"
SendMessage $1 ${CB_GETCURSEL} "" "" $2
SendMessage $1 ${CB_DELETESTRING} "$2" ""
!insertmacro AddHostNum -1
${if} $COUNTER_HOSTNUM < 1
;!insertmacro EnableGlobalBtn $2 1
ReadINIStr $2 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"
EnableWindow $2 0
ReadINIStr $2 "${MUI_INIFILE}" "Field ${GB_GLOBAL}" "HWND"
SendMessage $2 ${WM_SETTEXT} 0 "STR:帮助信息"
ReadINIStr $2 "${MUI_INIFILE}" "Field ${LAB_HELP}" "HWND"
SetCtlColors $2 0x004040 transparent
ShowWindow $2 1
ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND"
ShowWindow $2 0
${else}
!insertmacro EnableGlobalBtn $2 1
${endif}
Call ResetSelectHost
!insertmacro ShowReg2Txt $1 $2 $3
${Break}
##############################################################
${Case} ${BTN_UPDATE}
;MessageBox MB_OK "BTN_UPDATE" # 按下 [保存更新] 按钮
##############################################################
ReadINIStr $3 "${MUI_INIFILE}" "Field ${TXT_HOST}" "State"
${if} $3 == ""
System::Call 'user32::MessageBeep(i) i (0x00000001)'
MessageBox::show MB_ICONHAND|MB_TOPMOST "保存更新" "$SYSDIRshell32.dll,220"
"请填写主机标识。 "
"确定(&O)"
Pop $R0
System::Call "user32::SetFocus(i $HWND_TXT_HOST)i"
Abort
${else}
${if} $COUNTER_HOSTNUM < 1
ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"
SendMessage $1 ${CB_GETCURSEL} "" "" $2
SendMessage $1 ${CB_DELETESTRING} "$2" "" ;;删除旧主机标识
!insertmacro AddHostNum 1
DeleteINIStr "${MUI_INIFILE}" "Field ${DL_HOST}" "State"
${endif}
ReadINIStr $4 "${MUI_INIFILE}" "Field ${DL_HOST}" "State"
${if} "$3" == "$4"
DeleteRegKey HKLM "${REG_ME_HOSTLIST}$4"
${else} ;;标识改动
ReadRegStr $1 HKLM "${REG_ME_HOSTLIST}$3" ""
${if} $1 == "Setted" ;;已有标识
System::Call 'user32::MessageBeep(i) i (0x00000001)'
MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "保存更新"
"$SYSDIRshell32.dll,220"
"主机标识 $"$3$" 已被占用,保存更新将会覆盖原主机信息,是否继续? "
"是 (&Y)" "否 (&N)"
Pop $R0
${if} $R0 != 1 ;;放弃覆盖
SendMessage $HWND_TXT_HOST ${EM_SETSEL} 255 0
System::Call "user32::SetFocus(i $HWND_TXT_HOST)i"
Abort
${endif}
;;要覆盖
ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"
SendMessage $1 ${CB_SELECTSTRING} 0 "STR:$3"
${else} ;;新的标识
DeleteRegKey HKLM "${REG_ME_HOSTLIST}$4" ;;删除旧主机
ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"
SendMessage $1 ${CB_GETCURSEL} "" "" $2
SendMessage $1 ${CB_DELETESTRING} "$2" "" ;;删除旧主机标识
SendMessage $1 ${CB_ADDSTRING} 0 "STR:$3" ;;添加新标识
SendMessage $1 ${CB_SELECTSTRING} 0 "STR:$3"
${endif}
${endif}
!insertmacro EnableGlobalBtn $2 1
!insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框
!insertmacro SaveTxt2Reg $3 $2 $1 ;;保存并处理文本显示
${endif}
Abort ; ${Break}
##############################################################
${Case} ${BTN_ADD}
;MessageBox MB_OK "BTN_ADD" # 按下 [添加到主机列表] 按钮
##############################################################
ReadINIStr $3 "${MUI_INIFILE}" "Field ${TXT_HOST}" "State"
${if} $3 == "" ;没填写主机标识
System::Call 'user32::MessageBeep(i) i (0x00000001)'
Messagebox::show MB_ICONHAND|MB_TOPMOST "添加到主机列表" "$SYSDIRShell32.dll,176"
"请先为当前主机填写一个主机标识,以方便以后在主机标识下拉菜单中选择。 "
"确定(&O)"
Pop $R0
System::Call "user32::SetFocus(i $HWND_TXT_HOST)i"
Abort
${else} ;;开始添加到操作
ReadRegStr $1 HKLM "${REG_ME_HOSTLIST}$3" ""
${if} $1 == "Setted"
ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"
SendMessage $1 ${CB_SELECTSTRING} 0 "STR:$3"
System::Call 'user32::MessageBeep(i) i (0x00000001)'
MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "添加到主机列表"
"$SYSDIRshell32.dll,176"
"主机标识 $"$3$" 已被占用,是否将其覆盖? "
"是 (&Y)" "否 (&N)"
Pop $R0
${if} $R0 != 1 ;;放弃覆盖
SendMessage $HWND_TXT_HOST ${EM_SETSEL} 255 0
System::Call "user32::SetFocus(i $HWND_TXT_HOST)i"
Abort
${endif}
;;覆盖
${else}
${if} $COUNTER_HOSTNUM < 1
ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"
SendMessage $1 ${CB_GETCURSEL} "" "" $2
SendMessage $1 ${CB_DELETESTRING} "$2" "" ;;删除旧主机标识
${endif}
!insertmacro AddHostNum 1 ;;全局计数器+1
ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"
SendMessage $1 ${CB_ADDSTRING} 0 "STR:$3"
SendMessage $1 ${CB_SELECTSTRING} -1 "STR:$3"
${endif}
;;同步到窗体信息INI文件
WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" State "$3"
!insertmacro EnableGlobalBtn $2 1
!insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框
!insertmacro SaveTxt2Reg $3 $2 $1 ;;保存并处理文本显示
${endif}
!insertmacro ShowReg2Txt $1 $2 $3
${Break}
##############################################################
${Case} ${BTN_CHANGE_MAC}
;MessageBox MB_OK "BTN_CHANGE_MAC" # 按下 [修改MAC] 按钮
##############################################################
Call GetNetCardsInfo
ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_MAC}" "State"
StrCpy $4 "更改为 $"$2$""
${if} $2 == "${STR_UNSETTED}"
${orif} $2 == "${STR_ERRORFORMAT}"
StrCpy $2 ""
StrCpy $4 "还原为 $"网卡缺省值$""
${endif}
ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_NETCARD}" "State"
ReadINIStr $1 "${MUI_INIFILE}" "$1" "RegKeyIndex"
ReadRegStr $3 HKLM "${REG_NETWORK_ADAPTERS}$1" "NetworkAddress"
Check:
${if} $3 == $2
System::Call 'user32::MessageBeep(i) i (0x00000002)'
MessageBox::show MB_ICONHAND|MB_TOPMOST "提示" "0,103"
"当前 MAC 信息 已经是你要修改的值,无需重复修改。$r$n$r$n提示:
你可以 [开启/禁用网络连接] 以刷新 MAC 信息。 $r$n"
"哦 (&O)"
Pop $R0
Abort
${orif} $3 == ""
ReadRegStr $3 HKLM "${REG_NETWORK_ADAPTERS}$1" "NetCfgInstanceId"
ClearErrors
ReadINIStr $3 ${MUI_INIFILE} "$3" "USING MAC"
IfErrors +2
Goto Check ;;再检测一次
StrCpy $3 "网卡缺省值"
${endif}
System::Call 'user32::MessageBeep(i) i (0x00000001)'
MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "修改 MAC 确认"
"$SYSDIRshell32.dll,24"
"你确定要将当前 MAC 信息 $"$3$" $4 吗?"
"确定 (&O)" "不要 (&C)"
Pop $R0
${if} $R0 != 1 ;;不修改
Abort
${endif}
${if} $2 == ""
DeleteRegValue HKLM "${REG_NETWORK_ADAPTERS}$1" "NetworkAddress"
${else}
WriteRegStr HKLM "${REG_NETWORK_ADAPTERS}$1" "NetworkAddress" "$2"
${endif}
System::Call 'user32::MessageBeep(i) i (0x00000001)'
MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "MAC 修改成功"
"$SYSDIRshell32.dll,137"
"MAC 信息已经成功更改,是否要立刻 [开启/禁用网络连接] 以生效更新? "
"是 (&Y)" "否 (&N)"
Pop $R0
${if} $R0 == 1
FindWindow $4 '#32770' '${STR_CAPTION}'
ShowWindow $4 2
StrCpy $R0 "ExecTwice"
Call RefreshConnection
StrCpy $R0 ""
ShowWindow $4 1
${endif}
Abort
;${Break}
##############################################################
${Case} ${BTN_CHANGE_IP}
;MessageBox MB_OK "BTN_CHANGE_MAC" # 按下 [修改IP] 按钮
##############################################################
ReadINIStr $2 ${MUI_INIFILE} "Field ${DL_NETCARD}" State
ReadINIStr $2 ${MUI_INIFILE} "$2" "InstanceId"
ReadRegStr $3 HKLM "${REG_NETWORK_CONNECTIONS}$2Connection" "Name"
ReadINIStr $2 "${MUI_INIFILE}" "Field ${DL_HOST}" "State"
System::Call 'user32::MessageBeep(i) i (0x00000001)'
MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "TCP/IP信息修改确认" "0,103"
"确定要将主机 “$2” 的 TCP/IP 信息修改到 “$3” 属性设置吗? "
"是 (&Y)" "否 (&N)"
Pop $R0
${if} $R0 != 1
Abort
${endif}
StrCpy $1 "netsh interface ip set address $"$3$" static"
!insertmacro SetOneInfoTXT $2 "TXT_IP" " IP 地址"
StrCpy $1 "$1 $2"
!insertmacro SetOneInfoTXT $2 "TXT_MASK" "子网掩码"
StrCpy $1 "$1 $2"
!insertmacro SetOneInfoTXT $2 "TXT_NETGATE" "默认网关"
StrCpy $1 "$1 $2 1"
!insertmacro SetOneInfoTXT $2 "TXT_DNS" "首选DNS"
StrCpy $2 "netsh interface ip set dns $"$3$" static $2 primary"
;;最小化窗口,防止用户等待乱点
FindWindow $4 '#32770' '${STR_CAPTION}'
ShowWindow $4 2
Sleep 100
Banner::show /NOUNLOAD "正在更改当前网络连接的 TCP/IP 信息,请稍等……"
nsExec::ExecToStack /TIMEOUT=30000 "$1"
Pop $3
StrCmp $3 "timeout" 0 +3
StrCpy $3 "执行超时,请重试! "
Goto Fail
Pop $3
StrCpy $3 $3 -4
${if} $3 == "Ok."
${orif} $3 == "确定。"
nsExec::ExecToStack /TIMEOUT=20000 "$2"
Pop $3
StrCmp $3 "timeout" 0 +3
StrCpy $3 "执行超时,请重试! "
Goto DNS_Fail
Pop $3
StrCpy $3 $3 -4
${if} $3 == "Ok."
${orif} $3 == "确定。"
Banner::getWindow /NOUNLOAD
Pop $R0
ShowWindow $R0 0
ReadINIStr $2 ${MUI_INIFILE} "Field ${DL_NETCARD}" State
Push $2
Call GetTcpIpInfo
System::Call 'user32::MessageBeep(i) i (0x00000001)'
MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "修改 IP 成功" "$SYSDIRshell32.dll,14"
"所选主机的 TCP/IP 信息 已被成功应用到指定的网络连接。 "
"谢谢 (&T)"
Pop $R0
ShowWindow $4 1
Banner::destroy
Abort
${else}
DNS_Fail:
Banner::getWindow /NOUNLOAD
Pop $R0
ShowWindow $R0 0
System::Call 'user32::MessageBeep(i) i (0x00000001)'
MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "更改失败" "$SYSDIRshell32.dll,18"
"DNS 更改失败:$3 "
"确定 (&O)"
Pop $R0
ShowWindow $4 1
Banner::destroy
Abort
${endif}
${endif}
Fail:
Banner::getWindow /NOUNLOAD
Pop $R0
ShowWindow $R0 0
System::Call 'user32::MessageBeep(i) i (0x00000001)'
MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "更改失败" "$SYSDIRshell32.dll,18"
"更改失败:$3 "
"确定 (&O)"
Pop $R0
ShowWindow $4 1
Banner::destroy
Abort
;${Break}
##############################################################
${Case} ${BTN_MINIMIZE}
;MessageBox MB_OK "BTN_MINIMIZE" # 按下 [最小化] 按钮
##############################################################
FindWindow $4 '#32770' '${STR_CAPTION}'
ShowWindow $4 2
${Break}
##############################################################
${Case} ${BTN_RF_CONNECTION}
;MessageBox MB_OK "BTN_RF_CONNECTION" # 按下 [开启禁用网络] 按钮
##############################################################
Call RefreshConnection
Abort
;${Break}
${EndSwitch}
Abort ;;
;;页面消息回调函数结束
FunctionEnd ;LeaveCustom
##############################################################################

##############################################################
# 功能 -- 获取当前 TCP/IP 信息
;!macro GetRegMultiStr --(预先)子宏
;Function SubCallBack --(预先)子函数
;Function GetTcpIpInfo --主功能
##############################################################
!macro GetRegMultiStr Arg_reg.value Arg_ini.value
StrCpy $3 "${Arg_ini.value}"
GetFunctionAddress $2 SubCallBack
${ReadRegMultiStr} ${HKLM} "${REG_NETWORK_TCPIP}$1" "${Arg_reg.value}" $2
ClearErrors
!macroend
Function SubCallBack
Exch $2
${if} $2 == ""
GetErrorLevel $2
;MessageBox MB_OK "Error Level: $2"
${else}
;MessageBox MB_OK "$3: $2"
WriteINIStr ${MUI_INIFILE} "$0" "$3" "$2"
${endif}
Pop $2
FunctionEnd ;SubCallBack
Function GetTcpIpInfo
Exch $0
Push $1
Push $2
Push $3
ReadINIStr $1 ${MUI_INIFILE} "$0" "InstanceId"
!insertmacro GetRegMultiStr "IPAddress" "IP"
!insertmacro GetRegMultiStr "SubnetMask" "MASK"
!insertmacro GetRegMultiStr "DefaultGateway" "NETGATE"
ReadRegStr $2 HKLM "${REG_NETWORK_TCPIP}$1" "NameServer"
StrCpy $1 0
${Do}
StrCpy $3 $2 1 $1
${IfThen} $3 == ',' ${|} ${ExitDo} ${|}
IntOp $1 $1 + 1
${LoopUntil} $3 == ""
StrCpy $2 $2 $1
WriteINIStr ${MUI_INIFILE} "$0" "DNS" "$2"
Pop $3
Pop $2
Pop $1
Pop $0
FunctionEnd ;GetTcpIpInfo

##############################################################
# 功能 -- 初始化数据
# Function InitNetCardInfo
# Function InitHostList
# Function InitLastHostInfo
##############################################################
!define STR_SEPARATOR ``
Function GetNetCardsInfo
Push $0
Push $1
Push $2
Push $3
Push $4
Push $5
Push $6
Push $7
System::Alloc 4096
Pop $3
System::Call 'iphlpapi::GetAdaptersInfo(i r3r2, *l 4096 r1) i.r0'
StrCmp $0 0 0 finish
loop:
StrCmp $2 0 finish
System::Call '*$2(i.r2,i,&t260.r4, &t132 0, i 0, l.r5)'
System::Int64Op $5 % 0x100000000
Pop $6
IntFmt $6 "%08X" $6
System::Int64Op $5 - $6
Pop $7
System::Int64Op $7 / 0x100000000
Pop $7
IntFmt $7 "%04X" $7
StrCpy $7 "$7$6"
StrCpy $1 $7 2 10
StrCpy $0 $1
StrCpy $1 $7 2 8
StrCpy $0 '$0${STR_SEPARATOR}$1'
StrCpy $1 $7 2 6
StrCpy $0 '$0${STR_SEPARATOR}$1'
StrCpy $1 $7 2 4
StrCpy $0 '$0${STR_SEPARATOR}$1'
StrCpy $1 $7 2 2
StrCpy $0 '$0${STR_SEPARATOR}$1'
StrCpy $1 $7 2 0
StrCpy $0 '$0${STR_SEPARATOR}$1'
WriteINIStr ${MUI_INIFILE} "$4" "USING MAC" "$0"
Goto loop
finish:
System::Free $3
System::Free 0
Pop $7
Pop $6
Pop $5
Pop $4
Pop $3
Pop $2
Pop $1
Pop $0
FunctionEnd ;;GetNetCardsInfo
Function InitNetCardInfo
Push $0
Push $1
Push $2
Push $3
StrCpy $0 0
WriteINIStr ${MUI_INIFILE} "Settings" NetCardNum 0
WriteINIStr ${MUI_INIFILE} "Field ${DL_NETCARD}" ListItems ""
${Do}
EnumRegKey $1 HKLM "${REG_NETWORK_ADAPTERS}" $0
${IfThen} $1 == "" ${|} ${ExitDo} ${|}
ReadRegStr $2 HKLM "${REG_NETWORK_ADAPTERS}$1NdiInterfaces" "LowerRange"
${if} $2 == "ethernet"
ReadRegStr $2 HKLM "${REG_NETWORK_ADAPTERS}$1" "DriverDesc"
WriteINIStr ${MUI_INIFILE} "Field ${DL_NETCARD}" State "$2"
WriteINIStr ${MUI_INIFILE} "$2" "RegKeyIndex" "$1"
ReadRegStr $3 HKLM "${REG_NETWORK_ADAPTERS}$1" "NetworkAddress"
${if} $3 == ""
StrCpy $3 "${STR_UNSETTED}"
${endif}
WriteINIStr ${MUI_INIFILE} "$2" "Mac" "$3"
ReadRegStr $3 HKLM "${REG_NETWORK_ADAPTERS}$1" "NetCfgInstanceId"
WriteINIStr ${MUI_INIFILE} "$2" "InstanceId" "$3"
ReadINIStr $3 ${MUI_INIFILE} "$3" "USING MAC"
${if} $3 != ""
WriteINIStr ${MUI_INIFILE} "$2" "MAC" "$3"
${endif}
Push $2
Call GetTcpIpInfo
ReadINIStr $3 ${MUI_INIFILE} "Field ${DL_NETCARD}" ListItems
${if} $3 != ""
StrCpy $2 "$2|$3"
${endif}
WriteINIStr ${MUI_INIFILE} "Field ${DL_NETCARD}" ListItems "$2"
ReadINIStr $3 ${MUI_INIFILE} "Settings" NetCardNum
IntOp $3 $3 + 1
WriteINIStr ${MUI_INIFILE} "Settings" NetCardNum $3
${endif}
IntOp $0 $0 + 1
${Loop}
Pop $3
Pop $2
Pop $1
Pop $0
FunctionEnd ;;InitNetCardInfo
Function InitHostList
Push $0
Push $1
Push $2
StrCpy $0 0
WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" ListItems "" ;;初始化主机列表
${Do}
EnumRegKey $1 HKLM "${REG_ME_HOSTLIST}" $0
${IfThen} $1 == "" ${|} ${ExitDo} ${|}
;MessageBox MB_OK "$1"
ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$1" ""
${if} $2 == "Setted" ;;检验是否合法
WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" State "$1"
ReadINIStr $2 ${MUI_INIFILE} "Field ${DL_HOST}" ListItems
${if} $2 != ""
StrCpy $1 "$1|$2" ;合并/主机标识项目
${endif}
WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" ListItems "$1"
!insertmacro AddHostNum 1
${endif}
IntOp $0 $0 + 1
${Loop}
Pop $2
Pop $1
Pop $0
FunctionEnd ;;InitHostList
Function ResetSelectHost
Push $0
Push $1
Push $2
ReadINIStr $2 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"
${if} $COUNTER_HOSTNUM < 1 ;无主机信息
EnableWindow $2 0
SendMessage $1 ${CB_ADDSTRING} 0 "STR:${STR_DEFAULT_HOST}"
SendMessage $1 ${CB_SELECTSTRING} 0 "STR:${STR_DEFAULT_HOST}"
${else} ;有主机信息
EnableWindow $2 1
StrCpy $0 0
${Do}
EnumRegKey $1 HKLM "${REG_ME_HOSTLIST}" $0
${IfThen} $1 == "" ${|} ${ExitDo} ${|}
ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$1" ""
${if} $2 == "Setted" ;;检验是否合法
ReadINIStr $2 ${MUI_INIFILE} "Field ${DL_HOST}" HWND
SendMessage $2 ${CB_SELECTSTRING} 0 "STR:$1"
WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" State "$1"
${ExitDo}
${endif}
IntOp $0 $0 + 1
${Loop}
${endif}
Pop $2
Pop $1
Pop $0
FunctionEnd ;;ResetSelectHost
Function InitLastHostInfo ;;获取首选主机信息
Push $0
Push $1
Push $2
;;初始化主机下拉列表控件首选项
${if} $COUNTER_HOSTNUM > 0 ;有主机信息
WriteINIStr ${MUI_INIFILE} "Field ${GB_SELHOST}" Text "选择主机 ( 当前共 $COUNTER_HOSTNUM 个主机信息 )"
WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" Flags "Notify" ;初始可用主机下拉列表控件
ReadRegStr $0 HKLM "${REG_ME_HOSTLIST}" "LastHost"
ReadRegStr $1 HKLM "${REG_ME_HOSTLIST}$0" ""
${if} $1 == "Setted"
WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" State "$0"
${endif}
ReadINIStr $0 ${MUI_INIFILE} "Field ${DL_HOST}" State
WriteINIStr ${MUI_INIFILE} "Field ${TXT_HOST}" State $0
ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$0" "MAC"
${if} $2 == ""
${orif} $2 == "${STR_UNSETTED}"
StrCpy $2 "${STR_UNSETTED}"
${else}
StrLen $3 "$2"
${if} $3 != 12
StrCpy $2 "${STR_ERRORFORMAT}"
${endif}
${endif}
WriteINIStr ${MUI_INIFILE} "Field ${TXT_MAC}" State $2
ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$0" "IP"
${if} $2 == ""
StrCpy $2 "${STR_UNSETTED}"
${endif}
WriteINIStr ${MUI_INIFILE} "Field ${TXT_IP}" State $2
ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$0" "MASK"
${if} $2 == ""
StrCpy $2 "${STR_UNSETTED}"
${endif}
WriteINIStr ${MUI_INIFILE} "Field ${TXT_MASK}" State $2
ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$0" "NETGATE"
${if} $2 == ""
StrCpy $2 "${STR_UNSETTED}"
${endif}
WriteINIStr ${MUI_INIFILE} "Field ${TXT_NETGATE}" State $2
ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$0" "DNS"
${if} $2 == ""
StrCpy $2 "${STR_UNSETTED}"
${endif}
WriteINIStr ${MUI_INIFILE} "Field ${TXT_DNS}" State $2
${else} ;无主机信息
WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" State "${STR_DEFAULT_HOST}"
WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" ListItems "${STR_DEFAULT_HOST}"
ReadRegStr $2 HKLM "${REG_WINLOGON}" "AltDefaultDomainName"
WriteINIStr ${MUI_INIFILE} "Field ${TXT_HOST}" State $2
ReadINIStr $1 ${MUI_INIFILE} "Field ${DL_NETCARD}" State
ReadINIStr $2 ${MUI_INIFILE} "$1" "MAC"
WriteINIStr ${MUI_INIFILE} "Field ${TXT_MAC}" State $2
ReadINIStr $2 ${MUI_INIFILE} "$1" "IP"
WriteINIStr ${MUI_INIFILE} "Field ${TXT_IP}" State $2
ReadINIStr $2 ${MUI_INIFILE} "$1" "MASK"
WriteINIStr ${MUI_INIFILE} "Field ${TXT_MASK}" State $2
ReadINIStr $2 ${MUI_INIFILE} "$1" "NETGATE"
WriteINIStr ${MUI_INIFILE} "Field ${TXT_NETGATE}" State $2
ReadINIStr $2 ${MUI_INIFILE} "$1" "DNS"
WriteINIStr ${MUI_INIFILE} "Field ${TXT_DNS}" State $2
${endif}
Pop $2
Pop $1
Pop $0
FunctionEnd ;;InitLastHostInfo

##############################################################
# 功能 -- 刷新(开启/禁用) 网络连接
# Function RefreshConnection
##############################################################
Function RefreshConnection
Push $0
Push $1
Push $2
Push $3
Push $4
System::Call "advapi32::GetUserName(t .r0, *i ${NSIS_MAX_STRLEN} r1) i.r2"
;MessageBox MB_OK "UserName: $0 | CharsNm: $1"
StrCpy $2 $0 2
Loop:
IfFileExists "$TEMP$2$1.tmp" 0 Pass
IntOp $1 $1 + 100
Goto Loop
Pass:
StrCpy $1 "$TEMP$2$1.tmp"
ReadINIStr $2 ${MUI_INIFILE} "Field ${DL_NETCARD}" State
ReadINIStr $2 ${MUI_INIFILE} "$2" "InstanceId"
ReadRegStr $2 HKLM "${REG_NETWORK_CONNECTIONS}$2Connection" "Name"
ReadRegStr $3 HKCR "${REG_NETWORK_FOLDERNAME}" ""
!insertmacro CreateVBScript "$1" "$2" "$3"
Sleep 50 ;;稍等I/O结束
;FindWindow $4 '#32770' '${STR_CAPTION}'
;ShowWindow $4 2
;MessageBox MB_OK "VB脚本已经生成完毕,点击确定打开,查看:$1"
;ExecWait `"$SYSDIRnotepad.exe" "$1"`
;Quit
;ShowWindow $4 1
ExecWait `"$SYSDIRWScript.exe" /B /E:vbs "$1"`
${If} $R0 == "ExecTwice"
Sleep 5000 ;;平缓5秒
ExecWait `"$SYSDIRWScript.exe" /B /E:vbs "$1"`
${endif}
Delete "$1"
Call GetNetCardsInfo
Pop $4
Pop $3
Pop $2
Pop $1
Pop $0
FunctionEnd ;;RefreshConnection

##############################################################
# 功能 -- 导出主机列表备份 / 导入主机列表备份
#
# Function SaveHostlist2INI
# Function ImprotHostlist2REG
##############################################################

Function SaveHostlist2INI
Push $0
Push $1
Push $2
Push $3
FileOpen $2 "${VAR_OPENSAVE}" w
FileSeek $2 0 END
FileWrite $2 "${STR_SAVE_FILE_NOTE}"
FileClose $2
StrCpy $0 0
WriteINIStr ${VAR_OPENSAVE} "Main" HostNum 0
WriteINIStr ${VAR_OPENSAVE} "Main" Type "HostList Backup File"
WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" ListItems ""
${Do}
EnumRegKey $1 HKLM "${REG_ME_HOSTLIST}" $0
${IfThen} $1 == "" ${|} ${ExitDo} ${|}
ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$1" ""
${if} $2 == "Setted"
;${orif} $2 == "Hidden"
ReadINIStr $3 ${VAR_OPENSAVE} "Main" HostNum
IntOp $3 $3 + 1
WriteINIStr ${VAR_OPENSAVE} "Main" HostNum $3
FileOpen $2 "${VAR_OPENSAVE}" a
FileSeek $2 0 END
FileWrite $2 "$r$n"
FileClose $2
WriteINIStr ${VAR_OPENSAVE} "Host $3" FLAG "Setted"
WriteINIStr ${VAR_OPENSAVE} "Host $3" NAME "$1"
ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$1" "MAC"
${if} $2 == "${STR_ERRORFORMAT}"
${orif} $2 == "${STR_UNSETTED}"
StrCpy $2 ""
${endif}
WriteINIStr ${VAR_OPENSAVE} "Host $3" MAC "$2"
ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$1" "IP"
${if} $2 == "${STR_UNSETTED}"
StrCpy $2 ""
${endif}
WriteINIStr ${VAR_OPENSAVE} "Host $3" IP "$2"
ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$1" "MASK"
${if} $2 == "${STR_UNSETTED}"
StrCpy $2 ""
${endif}
WriteINIStr ${VAR_OPENSAVE} "Host $3" MASK "$2"
ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$1" "NETGATE"
${if} $2 == "${STR_UNSETTED}"
StrCpy $2 ""
${endif}
WriteINIStr ${VAR_OPENSAVE} "Host $3" NETGATE "$2"
ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$1" "DNS"
${if} $2 == "${STR_UNSETTED}"
StrCpy $2 ""
${endif}
WriteINIStr ${VAR_OPENSAVE} "Host $3" DNS "$2"
${endif}
IntOp $0 $0 + 1
${Loop}
ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}" "LastHost"
WriteINIStr ${VAR_OPENSAVE} "Main" "RectHost" "$2"
WriteINIStr ${VAR_OPENSAVE} "Main" "Type" "HostList Backup File"
Pop $3
Pop $2
Pop $1
Pop $0
FunctionEnd ;;SaveHostlist2INI
Function ImprotHostlist2REG
Push $0
Push $1
Push $2
Push $3
Push $4
StrCpy $R4 -1 ;;临时选择标记容器
StrCpy $0 0 ;成功导入计数器
ReadINIStr $4 ${VAR_OPENSAVE} "Main" HostNum
${if} $4 <= 0
MessageBox MB_OK|MB_ICONEXCLAMATION|MB_TOPMOST "主机列表备份文件中没有任何主机信息,无法导入! "
${else}
${if} $COUNTER_HOSTNUM < 1
ReadINIStr $3 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"
SendMessage $3 ${CB_DELETESTRING} 0 "" ;;删除旧主机标识
${endif}
;MessageBox MB_YESNO "继续?" IDYES +2
;Quit
${for} $1 1 $4
ReadINIStr $2 ${VAR_OPENSAVE} "Host $1" FLAG
${if} $2 != "Setted" ;;检测项目设置
${Continue}
${endif}
ReadINIStr $2 ${VAR_OPENSAVE} "Host $1" NAME
ReadRegStr $3 HKLM "${REG_ME_HOSTLIST}$2" ""
${if} $3 == "Setted"
;${orif} $3 == "Hidden"
${if} $R4 == "NOTOALL"
${Continue}
${orif} $R4 == "YESTOALL"
Goto OverW
${endif}
System::Call 'user32::MessageBeep(i) i (0x00000001)'
MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "导入主机列表" "$SYSDIRshell32.dll,23"
"主机标识 $2 已经存在,是否将原主机信息覆盖? "
" 是 " "全是" "否" "全否"
Pop $R0
${if} $R0 == 2
StrCpy $R4 "YESTOALL"
Goto OverW
${elseif} $R0 == 4
StrCpy $R4 "NOTOALL"
${elseif} $R0 == 1
Goto OverW
${endif}
${Continue}
OverW:
${else}
ReadINIStr $3 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"
SendMessage $3 ${CB_ADDSTRING} 0 "STR:$2" ;;添加新标识
!insertmacro AddHostNum 1
${endif}
ReadINIStr $3 ${VAR_OPENSAVE} "Host $1" FLAG
WriteRegStr HKLM "${REG_ME_HOSTLIST}$2" "" $3
ReadINIStr $3 ${VAR_OPENSAVE} "Host $1" MAC
WriteRegStr HKLM "${REG_ME_HOSTLIST}$2" "MAC" $3
ReadINIStr $3 ${VAR_OPENSAVE} "Host $1" IP
WriteRegStr HKLM "${REG_ME_HOSTLIST}$2" "IP" $3
ReadINIStr $3 ${VAR_OPENSAVE} "Host $1" MASK
WriteRegStr HKLM "${REG_ME_HOSTLIST}$2" "MASK" $3
ReadINIStr $3 ${VAR_OPENSAVE} "Host $1" NETGATE
WriteRegStr HKLM "${REG_ME_HOSTLIST}$2" "NETGATE" $3
ReadINIStr $3 ${VAR_OPENSAVE} "Host $1" DNS
WriteRegStr HKLM "${REG_ME_HOSTLIST}$2" "DNS" $3
IntOp $0 $0 + 1
${Next}
ReadINIStr $4 ${VAR_OPENSAVE} "Main" RectHost
ReadRegStr $3 HKLM "${REG_ME_HOSTLIST}$4" ""
${if} $3 != "Setted"
StrCpy $4 $2
${endif}
WriteRegStr HKLM "${REG_ME_HOSTLIST}" "LastHost" "$4"
ReadINIStr $3 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"
SendMessage $3 ${CB_SELECTSTRING} 0 "STR:$4"
WriteINIStr "${MUI_INIFILE}" "Field ${DL_HOST}" State "$4"
!insertmacro ShowReg2Txt $1 $2 $3
${if} $0 > 0
MessageBox MB_OK|MB_ICONINFORMATION|MB_TOPMOST "导入完成: 从备份文件中成功导入 $0 个主机项目。 "
${else}
MessageBox MB_OK|MB_ICONINFORMATION|MB_TOPMOST "没有导入任何主机。 "
${endif}
${endif}
Pop $4
Pop $3
Pop $2
Pop $1
Exch $0
FunctionEnd ;;ImprotHostlist2REG

Section -Nop
Quit ;;形式,用不到...
SectionEnd
© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容