杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2154|回复: 0

局域网使用工具NSIS脚本

[复制链接]
发表于 2019-3-1 22:02:02 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. !addplugindir "ResPlugins"

  2. #!define NSIS_VERSION_NEW ;;makensis.exe 2.21以后版本请去掉注释。

  3. !include "LanInfoManager.nsh"

  4. !define MUI_ICON "${RES_ICON}"

  5. !define MUI_UI "${RES_UI}"

  6. Name ${STR_NAME}

  7. Caption "${STR_CAPTION}"

  8. OutFile ${STR_OUTFILE}

  9. CRCCheck off

  10. !insertmacro MUI_LANGUAGE "${STR_MUI_LANG}"

  11. VIProductVersion "${STR_VERSION}"

  12. VIAddVersionKey /LANG=${LANG_ID} "ProductName" "${STR_PRODCTNAME}"

  13. VIAddVersionKey /LANG=${LANG_ID} "Comments" "${STR_COMMENTS}"

  14. VIAddVersionKey /LANG=${LANG_ID} "CompanyName" "${STR_COMPANYNAME}"

  15. VIAddVersionKey /LANG=${LANG_ID} "LegalCopyright" "${STR_COPYRIGHT}"

  16. VIAddVersionKey /LANG=${LANG_ID} "FileDescription" "${STR_FILEDESCRIPTION}"

  17. VIAddVersionKey /LANG=${LANG_ID} "FileVersion" "${STR_FILEVERSION}"

  18. VIAddVersionKey /LANG=${LANG_ID} "InternalName" "${STR_INTNAME}"

  19. VIAddVersionKey /LANG=${LANG_ID} "OriginalFilename" "${STR_OUTFILE}"

  20. Page custom ShowCustom LeaveCustom

  21. Page instfiles ;;可有可无...

  22. !macro AddHostNum ARG_Delta

  23. IntOp $COUNTER_HOSTNUM $COUNTER_HOSTNUM + ${ARG_Delta}

  24. !macroend

  25. !macro EnableGlobalBtn ARG_Var.hwnd ARG_Flag

  26. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_CHANGE_IP}" "HWND"

  27. ShowWindow ${ARG_Var.hwnd} ${ARG_Flag}

  28. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_CHANGE_MAC}" "HWND"

  29. ShowWindow ${ARG_Var.hwnd} ${ARG_Flag}

  30. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_MINIMIZE}" "HWND"

  31. ShowWindow ${ARG_Var.hwnd} ${ARG_Flag}

  32. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_RF_CONNECTION}" "HWND"

  33. ShowWindow ${ARG_Var.hwnd} ${ARG_Flag}

  34. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${LAB_HELP}" "HWND"

  35. ShowWindow ${ARG_Var.hwnd} 0

  36. ${if} ${ARG_Flag} == 0

  37. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${GB_GLOBAL}" "HWND"

  38. SendMessage ${ARG_Var.hwnd} ${WM_SETTEXT} 0 "STR:${STR_NOTEPAD}" ;;更改标签字符

  39. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND"

  40. ShowWindow ${ARG_Var.hwnd} 1

  41. ${else}

  42. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${GB_GLOBAL}" "HWND"

  43. SendMessage ${ARG_Var.hwnd} ${WM_SETTEXT} 0 "STR:全局操作" ;;更改标签字符

  44. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND"

  45. ShowWindow ${ARG_Var.hwnd} 1

  46. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND"

  47. ShowWindow ${ARG_Var.hwnd} 0

  48. ${endif}

  49. !macroend

  50. !macro EnableTXTEdit ARG_Var.hwnd ARG_Flag

  51. EnableWindow $HWND_TXT_HOST ${ARG_Flag}

  52. EnableWindow $HWND_TXT_MAC ${ARG_Flag}

  53. EnableWindow $HWND_TXT_IP ${ARG_Flag}

  54. EnableWindow $HWND_TXT_MASK ${ARG_Flag}

  55. EnableWindow $HWND_TXT_NETGATE ${ARG_Flag}

  56. EnableWindow $HWND_TXT_DNS ${ARG_Flag}

  57. ${if} ${ARG_Flag} == 0

  58. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${LAB_SCALE}" "HWND"

  59. ShowWindow ${ARG_Var.hwnd} 0

  60. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${LAB_AUTHOR}" "HWND"

  61. ShowWindow ${ARG_Var.hwnd} 0

  62. SetCtlColors ${ARG_Var.hwnd} 0x333333 transparent

  63. SendMessage ${ARG_Var.hwnd} ${WM_SETTEXT} 0 "STR:${STR_AUTHOR}"

  64. ShowWindow ${ARG_Var.hwnd} 1

  65. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_NEW_HOST}" "HWND"

  66. EnableWindow ${ARG_Var.hwnd} 1

  67. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_EDIT_HOST}" "HWND"

  68. EnableWindow ${ARG_Var.hwnd} 1

  69. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_ADD}" "HWND"

  70. ShowWindow ${ARG_Var.hwnd} 0

  71. EnableWindow ${ARG_Var.hwnd} 0

  72. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_UPDATE}" "HWND"

  73. ShowWindow ${ARG_Var.hwnd} 0

  74. EnableWindow ${ARG_Var.hwnd} 0

  75. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_DELETE}" "HWND"

  76. ShowWindow ${ARG_Var.hwnd} 0

  77. EnableWindow ${ARG_Var.hwnd} 0

  78. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND" ;;可用下拉主机列表

  79. EnableWindow ${ARG_Var.hwnd} 1

  80. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_EXPORT_HOSTLIST}" "HWND"

  81. WriteINIStr "${MUI_INIFILE}" "Field ${BTN_EXPORT_HOSTLIST}" "Text" "备份主机列表(&S)"

  82. SendMessage ${ARG_Var.hwnd} ${WM_SETTEXT} 0 "STR:备份主机列表(&S)"

  83. ${else}

  84. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${LAB_SCALE}" "HWND"

  85. ShowWindow ${ARG_Var.hwnd} 1

  86. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${LAB_AUTHOR}" "HWND"

  87. ShowWindow ${ARG_Var.hwnd} 0

  88. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_NEW_HOST}" "HWND"

  89. EnableWindow ${ARG_Var.hwnd} 0

  90. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${BTN_EDIT_HOST}" "HWND"

  91. EnableWindow ${ARG_Var.hwnd} 0

  92. ReadINIStr ${ARG_Var.hwnd} "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND" ;;禁用下拉主机列表

  93. EnableWindow ${ARG_Var.hwnd} 0

  94. ${endif}

  95. !macroend

  96. !macro ShowReg2Txt ARG_Var.1 ARG_Var.2 ARG_Var.3

  97. ${if} $COUNTER_HOSTNUM >= 1 ;有主机信息

  98. ReadINIStr ${ARG_Var.1} "${MUI_INIFILE}" "Field ${DL_HOST}" "State"

  99. SendMessage $HWND_TXT_HOST ${WM_SETTEXT} 0 "STR:${ARG_Var.1}"

  100. ReadRegStr ${ARG_Var.2} HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "MAC"

  101. ${if} ${ARG_Var.2} == ""

  102. ${orif} ${ARG_Var.2} == ${STR_UNSETTED}

  103. StrCpy ${ARG_Var.2} "${STR_UNSETTED}"

  104. ${else}

  105. StrLen ${ARG_Var.3} "${ARG_Var.2}"

  106. ${if} ${ARG_Var.3} != 12

  107. StrCpy ${ARG_Var.2} "${STR_ERRORFORMAT}"

  108. ${endif}

  109. ${endif}

  110. SendMessage $HWND_TXT_MAC ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"

  111. ReadRegStr ${ARG_Var.2} HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "IP"

  112. ${if} ${ARG_Var.2} == ""

  113. StrCpy ${ARG_Var.2} "${STR_UNSETTED}"

  114. ${endif}

  115. SendMessage $HWND_TXT_IP ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"

  116. ReadRegStr ${ARG_Var.2} HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "MASK"

  117. ${if} ${ARG_Var.2} == ""

  118. StrCpy ${ARG_Var.2} "${STR_UNSETTED}"

  119. ${endif}

  120. SendMessage $HWND_TXT_MASK ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"

  121. ReadRegStr ${ARG_Var.2} HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "NETGATE"

  122. ${if} ${ARG_Var.2} == ""

  123. StrCpy ${ARG_Var.2} "${STR_UNSETTED}"

  124. ${endif}

  125. SendMessage $HWND_TXT_NETGATE ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"

  126. ReadRegStr ${ARG_Var.2} HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "DNS"

  127. ${if} ${ARG_Var.2} == ""

  128. StrCpy ${ARG_Var.2} "${STR_UNSETTED}"

  129. ${endif}

  130. SendMessage $HWND_TXT_DNS ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"

  131. ${else} ;无主机信息

  132. ReadRegStr ${ARG_Var.2} HKLM "${REG_WINLOGON}" "AltDefaultDomainName"

  133. SendMessage $HWND_TXT_HOST ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"

  134. ReadINIStr ${ARG_Var.1} ${MUI_INIFILE} "Field ${DL_NETCARD}" State

  135. ReadINIStr ${ARG_Var.2} ${MUI_INIFILE} "${ARG_Var.1}" "MAC"

  136. SendMessage $HWND_TXT_MAC ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"

  137. ReadINIStr ${ARG_Var.2} ${MUI_INIFILE} "${ARG_Var.1}" "IP"

  138. SendMessage $HWND_TXT_IP ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"

  139. ReadINIStr ${ARG_Var.2} ${MUI_INIFILE} "${ARG_Var.1}" "MASK"

  140. SendMessage $HWND_TXT_MASK ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"

  141. ReadINIStr ${ARG_Var.2} ${MUI_INIFILE} "${ARG_Var.1}" "NETGATE"

  142. SendMessage $HWND_TXT_NETGATE ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"

  143. ReadINIStr ${ARG_Var.2} ${MUI_INIFILE} "${ARG_Var.1}" "DNS"

  144. SendMessage $HWND_TXT_DNS ${WM_SETTEXT} 0 "STR:${ARG_Var.2}"

  145. ${endif}

  146. ${if} $COUNTER_HOSTNUM < 1 ;无主机列表信息

  147. SendMessage $HWND_GB_SELHOST ${WM_SETTEXT} 0 "STR:选择主机 ( 无主机信息 )"

  148. ${else} ;;显示主机个数

  149. SendMessage $HWND_GB_SELHOST ${WM_SETTEXT} 0 "STR:选择主机 ( 当前共 $COUNTER_HOSTNUM 个主机信息 )"

  150. ${endif}

  151. !macroend

  152. !macro SaveTxt2Reg ARG_Var.1 ARG_Var.2 ARG_Var.3

  153. WriteRegStr HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "" "Setted"

  154. WriteINIStr ${MUI_INIFILE} "Field ${TXT_HOST}" State ${ARG_Var.1}

  155. ReadINIStr ${ARG_Var.2} "${MUI_INIFILE}" "Field ${TXT_MAC}" "State"

  156. StrCpy ${ARG_Var.3} "${ARG_Var.2}"

  157. ${if} ${ARG_Var.2} == ""

  158. ${orif} ${ARG_Var.2} == "${STR_UNSETTED}"

  159. StrCpy ${ARG_Var.2} ""

  160. StrCpy ${ARG_Var.3} "${STR_UNSETTED}"

  161. ${else}

  162. StrLen ${ARG_Var.3} "${ARG_Var.2}"

  163. ${if} ${ARG_Var.3} != 12

  164. StrCpy ${ARG_Var.3} "${STR_ERRORFORMAT}"

  165. ${else}

  166. StrCpy ${ARG_Var.3} ${ARG_Var.2}

  167. ${endif}

  168. ${endif}

  169. SendMessage $HWND_TXT_MAC ${WM_SETTEXT} 0 "STR:${ARG_Var.3}"

  170. WriteRegStr HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "MAC" "${ARG_Var.2}"

  171. ReadINIStr ${ARG_Var.2} "${MUI_INIFILE}" "Field ${TXT_IP}" "State"

  172. StrCpy ${ARG_Var.3} "${ARG_Var.2}"

  173. ${if} ${ARG_Var.2} == ""

  174. ${orif} ${ARG_Var.2} == "${STR_UNSETTED}"

  175. StrCpy ${ARG_Var.3} ${STR_UNSETTED}

  176. StrCpy ${ARG_Var.2} ""

  177. ${endif}

  178. SendMessage $HWND_TXT_IP ${WM_SETTEXT} 0 "STR:${ARG_Var.3}"

  179. WriteRegStr HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "IP" ${ARG_Var.2}

  180. ReadINIStr ${ARG_Var.2} "${MUI_INIFILE}" "Field ${TXT_MASK}" "State"

  181. StrCpy ${ARG_Var.3} "${ARG_Var.2}"

  182. ${if} ${ARG_Var.2} == ""

  183. ${orif} ${ARG_Var.2} == "${STR_UNSETTED}"

  184. StrCpy ${ARG_Var.3} ${STR_UNSETTED}

  185. StrCpy ${ARG_Var.2} ""

  186. ${endif}

  187. SendMessage $HWND_TXT_MASK ${WM_SETTEXT} 0 "STR:${ARG_Var.3}"

  188. WriteRegStr HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "MASK" ${ARG_Var.2}

  189. ReadINIStr ${ARG_Var.2} "${MUI_INIFILE}" "Field ${TXT_NETGATE}" "State"

  190. StrCpy ${ARG_Var.3} "${ARG_Var.2}"

  191. ${if} ${ARG_Var.2} == ""

  192. ${orif} ${ARG_Var.2} == "${STR_UNSETTED}"

  193. StrCpy ${ARG_Var.3} ${STR_UNSETTED}

  194. StrCpy ${ARG_Var.2} ""

  195. ${endif}

  196. SendMessage $HWND_TXT_NETGATE ${WM_SETTEXT} 0 "STR:${ARG_Var.3}"

  197. WriteRegStr HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "NETGATE" ${ARG_Var.2}

  198. ReadINIStr ${ARG_Var.2} "${MUI_INIFILE}" "Field ${TXT_DNS}" "State"

  199. StrCpy ${ARG_Var.3} "${ARG_Var.2}"

  200. ${if} ${ARG_Var.2} == ""

  201. ${orif} ${ARG_Var.2} == "${STR_UNSETTED}"

  202. StrCpy ${ARG_Var.3} ${STR_UNSETTED}

  203. StrCpy ${ARG_Var.2} ""

  204. ${endif}

  205. SendMessage $HWND_TXT_DNS ${WM_SETTEXT} 0 "STR:${ARG_Var.3}"

  206. WriteRegStr HKLM "${REG_ME_HOSTLIST}${ARG_Var.1}" "DNS" ${ARG_Var.2}

  207. !macroend

  208. !macro SetOneInfoTXT ARG_Var.temp ARG_Syb.hwnd ARG_Str.Mgs

  209. ReadINIStr ${ARG_Var.temp} "${MUI_INIFILE}" "Field ${${ARG_Syb.hwnd}}" "State"

  210. ${if} ${ARG_Var.temp} == "${STR_UNSETTED}"

  211. ${orif} ${ARG_Var.temp} == ""

  212. System::Call 'user32::MessageBeep(i) i (0x00000000)'

  213. MessageBox::show MB_ICONHAND|MB_TOPMOST "信息不全" "$SYSDIRShell32.dll,200"

  214. "无法更改 TCP/IP 配置,请你完整填写 [${ARG_Str.Mgs}] 信息。 "

  215. "好的 (&O)"

  216. Pop $R0

  217. EnableWindow $HWND_${ARG_Syb.hwnd} 1

  218. SendMessage $HWND_${ARG_Syb.hwnd} ${WM_SETTEXT} 0 "STR:"

  219. System::Call "user32::SetFocus(i $HWND_${ARG_Syb.hwnd})i"

  220. ReadINIStr ${ARG_Var.temp} "${MUI_INIFILE}" "Field ${LAB_AUTHOR}" "HWND"

  221. ShowWindow ${ARG_Var.temp} 0

  222. SetCtlColors ${ARG_Var.temp} 0xD95200 transparent

  223. SendMessage ${ARG_Var.temp} ${WM_SETTEXT} 0 "STR:填写${ARG_Str.Mgs}"

  224. ShowWindow ${ARG_Var.temp} 1

  225. ReadINIStr ${ARG_Var.temp} "${MUI_INIFILE}" "Field ${BTN_UPDATE}" "HWND"

  226. ;; 显示[更新主机]

  227. EnableWindow ${ARG_Var.temp} 1

  228. ShowWindow ${ARG_Var.temp} 1

  229. Abort

  230. ${endif}

  231. !macroend

  232. !macro CovertTxt4Edit ARG_Var.temp

  233. ReadINIStr ${ARG_Var.temp} "${MUI_INIFILE}" "Field ${TXT_MAC}" "State"

  234. ${if} ${ARG_Var.temp} == "${STR_UNSETTED}"

  235. SendMessage $HWND_TXT_MAC ${WM_SETTEXT} 0 "STR:"

  236. ${orif} ${ARG_Var.temp} == "${STR_ERRORFORMAT}"

  237. ReadINIStr ${ARG_Var.temp} "${MUI_INIFILE}" "Field ${DL_HOST}" "State"

  238. ReadRegStr ${ARG_Var.temp} HKLM "${REG_ME_HOSTLIST}${ARG_Var.temp}" "MAC"

  239. SendMessage $HWND_TXT_MAC ${WM_SETTEXT} 0 "STR:${ARG_Var.temp}"

  240. SendMessage $HWND_TXT_MAC ${EM_SETSEL} 255 0

  241. System::Call "user32::SetFocus(i $HWND_TXT_MAC)i" ;;设置焦点

  242. ${endif}

  243. ReadINIStr ${ARG_Var.temp} "${MUI_INIFILE}" "Field ${TXT_IP}" "State"

  244. ${if} ${ARG_Var.temp} == "${STR_UNSETTED}"

  245. SendMessage $HWND_TXT_IP ${WM_SETTEXT} 0 "STR:"

  246. ${endif}

  247. ReadINIStr ${ARG_Var.temp} "${MUI_INIFILE}" "Field ${TXT_MASK}" "State"

  248. ${if} ${ARG_Var.temp} == "${STR_UNSETTED}"

  249. SendMessage $HWND_TXT_MASK ${WM_SETTEXT} 0 "STR:"

  250. ${endif}

  251. ReadINIStr ${ARG_Var.temp} "${MUI_INIFILE}" "Field ${TXT_NETGATE}" "State"

  252. ${if} ${ARG_Var.temp} == "${STR_UNSETTED}"

  253. SendMessage $HWND_TXT_NETGATE ${WM_SETTEXT} 0 "STR:"

  254. ${endif}

  255. ReadINIStr ${ARG_Var.temp} "${MUI_INIFILE}" "Field ${TXT_DNS}" "State"

  256. ${if} ${ARG_Var.temp} == "${STR_UNSETTED}"

  257. SendMessage $HWND_TXT_DNS ${WM_SETTEXT} 0 "STR:"

  258. ${endif}

  259. !macroend

  260. !macro ShowNotePad ARG_Var.1 ARG_Var.2

  261. ReadINIStr ${ARG_Var.1} "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND"

  262. ReadINIStr ${ARG_Var.2} "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "State"

  263. ${if} ${ARG_Var.2} == ""

  264. SendMessage ${ARG_Var.1} ${WM_SETTEXT} 0 "STR:${STR_NOTEPAD_HELP}"

  265. SendMessage ${ARG_Var.1} ${EM_SETSEL} 255 0

  266. ${endif}

  267. ShowWindow ${ARG_Var.1} 1

  268. System::Call "user32::SetFocus(i ${ARG_Var.1})i" ;;设置焦点

  269. ReadINIStr ${ARG_Var.1} "${MUI_INIFILE}" "Field ${GB_GLOBAL}" "HWND"

  270. SendMessage ${ARG_Var.1} ${WM_SETTEXT} 0 "STR:${STR_NOTEPAD}" ;;更改标签字符

  271. !macroend

  272. ###############

  273. # 入口初始化函数...

  274. ###############

  275. Function .onInit

  276. ;; 窗体互斥处理...

  277. SYSTEM::Call "kernel32::CreateMutexA(i 0, i 0, t '${STR_CAPTION}') i .r0 ?e"

  278. Pop $0

  279. ${if} $0 != 0

  280. StrLen $0 "${STR_CAPTION}"

  281. IntOp $0 $0 + 1

  282. loop:

  283. FindWindow $1 '#32770' '' 0 $1

  284. ${if} $1 != 0

  285. SYSTEM::Call "user32::GetWindowText(i r1, t .r2, i r0) i."

  286. StrCmp $2 "${STR_CAPTION}" 0 loop

  287. SYSTEM::Call "user32::SetForegroundWindow(i r1) i."

  288. ${endif}

  289. ShowWindow $1 2

  290. ShowWindow $1 1

  291. Abort

  292. ${endif}

  293. ;;---------------------

  294. InitPluginsDir

  295. ClearErrors

  296. ReadRegStr $R0 HKLM "SOFTWAREMicrosoftWindows NTCurrentVersion" CurrentVersion

  297. IfErrors 0 Pass

  298. System::Call 'user32::MessageBeep(i) i (0x00000110)'

  299. Messagebox::show MB_ICONHAND|MB_TOPMOST "LanInfoMan" "0,103"

  300. "您的 Windows 版本过低,本工具只运行于 Win2000以上的 Windows 平台中。 "

  301. "确定 (&O)"

  302. Pop $R0

  303. Quit

  304. Pass:

  305. ${Var} COUNTER_HOSTNUM

  306. StrCpy $COUNTER_HOSTNUM 0 ;;初始化主机计数器

  307. File /oname=${MUI_INIFILE} "${RES_INIFILE}"

  308. File /oname=${MUI_ICOFILE} "${RES_ICOFILE}"

  309. WriteINIStr "${MUI_INIFILE}" "Field ${LAB_AUTHOR}" "Text" "${STR_AUTHOR}"

  310. WriteINIStr "${MUI_INIFILE}" "Field ${ICON_HOST}" "Text" "${MUI_ICOFILE}"

  311. ;;------------------------------------

  312. ReadRegStr $R0 HKCR "Hlbackupini.file" ""

  313. ${if} $R0 != "主机列表备份文件"

  314. WriteRegStr HKCR ".hlbf" "" "Hlbackupini.file"

  315. WriteRegStr HKCR "Hlbackupini.file" "" "主机列表备份文件"

  316. WriteRegStr HKCR "Hlbackupini.fileDefaultIcon" "" "$SYSDIRShell32.dll,-178"

  317. WriteRegStr HKCR "Hlbackupini.fileshellopen" "" ""

  318. WriteRegStr HKCR "Hlbackupini.fileshellopencommand" ""

  319. "$"$PROGRAMFILESWindows NTAccessorieswordpad.exe$" $"%1$""

  320. System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)'

  321. ${endif}

  322. ;;------------------------------------

  323. Call GetNetCardsInfo

  324. Call InitNetCardInfo

  325. ReadINIStr $0 ${MUI_INIFILE} "Settings" NetCardNum

  326. ${if} $0 <= 0

  327. System::Call 'user32::MessageBeep(i) i (0x00000110)'

  328. Messagebox::show MB_ICONHAND|MB_TOPMOST "LanInfoMan" "0,103"

  329. "没有检测到本机的活动网卡信息,请检查网卡是否正确安装。 "

  330. " 我晕 (&F) "

  331. Quit

  332. ${endif}

  333. ReadRegStr $0 HKLM "${REG_ME}Settings" "NetCardSelected"

  334. ClearErrors

  335. ReadINIStr $1 ${MUI_INIFILE} "$0" "IP"

  336. IfErrors +2

  337. WriteINIStr "${MUI_INIFILE}" "Field ${DL_NETCARD}" "State" "$0"

  338. Call InitHostList

  339. Call InitLastHostInfo

  340. WriteINIStr "${MUI_INIFILE}" "Field ${LAB_HELP}" "Text" "${STR_START_HELP}"

  341. FunctionEnd

  342. Function ShowCustom

  343. InstallOptions::initDialog /NOUNLOAD "${MUI_INIFILE}"

  344. Pop $0 ;IO页面窗体句柄

  345. ${Var} HWND_TXT_HOST

  346. ${Var} HWND_TXT_MAC

  347. ${Var} HWND_TXT_IP

  348. ${Var} HWND_TXT_MASK

  349. ${Var} HWND_TXT_NETGATE

  350. ${Var} HWND_TXT_DNS

  351. ${Var} HWND_GB_SELHOST

  352. ReadINIStr $HWND_TXT_HOST "${MUI_INIFILE}" "Field ${TXT_HOST}" "HWND"

  353. ReadINIStr $HWND_TXT_MAC "${MUI_INIFILE}" "Field ${TXT_MAC}" "HWND"

  354. ReadINIStr $HWND_TXT_IP "${MUI_INIFILE}" "Field ${TXT_IP}" "HWND"

  355. ReadINIStr $HWND_TXT_MASK "${MUI_INIFILE}" "Field ${TXT_MASK}" "HWND"

  356. ReadINIStr $HWND_TXT_NETGATE "${MUI_INIFILE}" "Field ${TXT_NETGATE}" "HWND"

  357. ReadINIStr $HWND_TXT_DNS "${MUI_INIFILE}" "Field ${TXT_DNS}" "HWND"

  358. ReadINIStr $HWND_GB_SELHOST "${MUI_INIFILE}" "Field ${GB_SELHOST}" "HWND"

  359. ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND"

  360. SetCtlColors $2 0x808080 0xFEFEFE

  361. !insertmacro EnableTXTEdit $2 0

  362. ${if} $COUNTER_HOSTNUM > 0

  363. !insertmacro EnableGlobalBtn $2 1

  364. ${else}

  365. !insertmacro EnableGlobalBtn $2 0

  366. ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND"

  367. ShowWindow $2 0

  368. ReadINIStr $2 "${MUI_INIFILE}" "Field ${GB_GLOBAL}" "HWND"

  369. SendMessage $2 ${WM_SETTEXT} 0 "STR:帮助信息"

  370. ReadINIStr $2 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"

  371. EnableWindow $2 0

  372. ReadINIStr $2 "${MUI_INIFILE}" "Field ${LAB_HELP}" "HWND"

  373. ShowWindow $2 1

  374. SetCtlColors $2 0x6C6C6C transparent

  375. ;CreateFont $1 "Arial" "8" "700"

  376. ;SendMessage $2 ${WM_SETFONT} $1 0

  377. ${endif}

  378. !insertmacro EditCtrStyle $HWND_TXT_MAC ${UPPERCASE}

  379. CreateFont $0 "宋体" "9"

  380. SendMessage $HWND_TXT_MAC ${WM_SETFONT} $0 0

  381. InstallOptions::show

  382. Pop $0

  383. FunctionEnd

  384. Function LeaveCustom

  385. ReadINIStr $0 "${MUI_INIFILE}" "Settings" "State"

  386. ${Switch} $0

  387. ##############################################################

  388. ${Case} ${DL_NETCARD}

  389. ;MessageBox MB_OK "DL_NETCARD" # 按下 [选择网卡] 下拉列表

  390. ##############################################################

  391. ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_NETCARD}" "State"

  392. WriteRegStr HKLM "${REG_ME}Settings" "NetCardSelected" $1

  393. !insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框

  394. ${if} $COUNTER_HOSTNUM > 0

  395. !insertmacro EnableGlobalBtn $2 1

  396. ${else}

  397. !insertmacro EnableGlobalBtn $2 0

  398. ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND"

  399. ShowWindow $2 0

  400. ReadINIStr $2 "${MUI_INIFILE}" "Field ${GB_GLOBAL}" "HWND"

  401. SendMessage $2 ${WM_SETTEXT} 0 "STR:帮助信息"

  402. ReadINIStr $2 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"

  403. EnableWindow $2 0

  404. ReadINIStr $2 "${MUI_INIFILE}" "Field ${LAB_HELP}" "HWND"

  405. ShowWindow $2 1

  406. SetCtlColors $2 0x6C6C6C transparent

  407. ;CreateFont $1 "Arial" "8" "700"

  408. ;SendMessage $2 ${WM_SETFONT} $1 0

  409. ${endif}

  410. !insertmacro ShowReg2Txt $1 $2 $3

  411. ${Break}

  412. ##############################################################

  413. ${Case} ${DL_HOST}

  414. ;MessageBox MB_OK "DL_HOST" # 按下 [主机标识] 下拉列表

  415. ##############################################################

  416. ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "State"

  417. WriteRegStr HKLM "${REG_ME_HOSTLIST}" "LastHost" "$1"

  418. !insertmacro EnableGlobalBtn $2 1

  419. !insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框

  420. !insertmacro ShowReg2Txt $1 $2 $3

  421. ${Break}

  422. ##############################################################

  423. ${Case} ${BTN_EDIT_HOST}

  424. ;MessageBox MB_OK "BTN_EDIT_HOST" # 按下 [编辑] 按钮

  425. ##############################################################

  426. ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_EXPORT_HOSTLIST}" "HWND"

  427. WriteINIStr "${MUI_INIFILE}" "Field ${BTN_EXPORT_HOSTLIST}" "Text" "放弃编辑主机(&C)"

  428. SendMessage $2 ${WM_SETTEXT} 0 "STR:放弃编辑主机(&C)"

  429. !insertmacro ShowNotePad $2 $1

  430. !insertmacro EnableGlobalBtn $2 0 ;;隐藏全局操作按钮区-->显示临时编辑帮助区

  431. !insertmacro EnableTXTEdit $2 1 ;;可用编辑文本框

  432. !insertmacro CovertTxt4Edit $2 ;---检测转化文本字符显示

  433. ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_ADD}" "HWND"

  434. ;;隐藏[添加到主机列表]

  435. ShowWindow $2 0

  436. ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_UPDATE}" "HWND"

  437. ;; 可用[更新主机]

  438. EnableWindow $2 1

  439. ShowWindow $2 1

  440. ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_DELETE}" "HWND"

  441. ;; 可用[删除主机]

  442. ShowWindow $2 1

  443. ${if} $COUNTER_HOSTNUM > 0 ;有主机信息

  444. EnableWindow $2 1

  445. ${else}

  446. EnableWindow $2 0

  447. ${endif}

  448. Abort

  449. ${Break} ;; &#128578;

  450. ##############################################################

  451. ${Case} ${BTN_NEW_HOST}

  452. ;MessageBox MB_OK "BTN_NEW_HOST" # 按下 [新建] 按钮

  453. ##############################################################

  454. ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_EXPORT_HOSTLIST}" "HWND"

  455. WriteINIStr "${MUI_INIFILE}" "Field ${BTN_EXPORT_HOSTLIST}" "Text" "放弃新建主机(&C)"

  456. SendMessage $2 ${WM_SETTEXT} 0 "STR:放弃新建主机(&C)"

  457. SendMessage $HWND_TXT_HOST ${WM_SETTEXT} 0 "STR:"

  458. SendMessage $HWND_TXT_MAC ${WM_SETTEXT} 0 "STR:"

  459. SendMessage $HWND_TXT_IP ${WM_SETTEXT} 0 "STR:"

  460. ReadINIStr $4 ${MUI_INIFILE} "Field ${DL_NETCARD}" State

  461. ReadINIStr $3 ${MUI_INIFILE} "$4" "IP"

  462. StrCpy $1 "${STR_NOTEPAD_HELP}$r$n可能有用的参考信息:$t IP 地址:$3$r$n"

  463. StrCpy $3 $3 -3

  464. SendMessage $HWND_TXT_IP ${WM_SETTEXT} 0 "STR:$3"

  465. ReadINIStr $3 ${MUI_INIFILE} "$4" "MASK"

  466. SendMessage $HWND_TXT_MASK ${WM_SETTEXT} 0 "STR:$3"

  467. StrCpy $1 "$1子网掩码:$3"

  468. ReadINIStr $3 ${MUI_INIFILE} "$4" "NETGATE"

  469. SendMessage $HWND_TXT_NETGATE ${WM_SETTEXT} 0 "STR:$3"

  470. StrCpy $1 "$1 默认网关:$3"

  471. ReadINIStr $3 ${MUI_INIFILE} "$4" "DNS"

  472. SendMessage $HWND_TXT_DNS ${WM_SETTEXT} 0 "STR:$3"

  473. StrCpy $1 "$1 首选DNS :$3"

  474. ;MessageBox MB_OK "$1"

  475. ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "State"

  476. ${if} $2 == "${STR_NOTEPAD_HELP}"

  477. ${orif} $2 == ""

  478. ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND"

  479. ;SendMessage $2 ${WM_SETTEXT} 0 "STR:${STR_NOTEPAD_HELP}$r$n$r$n$1$r$n"

  480. SendMessage $2 ${WM_SETTEXT} 0 "STR:$1"

  481. ;SendMessage $2 ${EM_SETSEL} 255 0

  482. ${endif}

  483. ShowWindow $2 1

  484. ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_UPDATE}" "HWND"

  485. ;; 隐藏[更新主机]

  486. ShowWindow $2 0

  487. EnableWindow $2 0

  488. ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_DELETE}" "HWND"

  489. ;; 隐藏[删除主机]

  490. ShowWindow $2 0

  491. EnableWindow $2 0

  492. ReadINIStr $2 "${MUI_INIFILE}" "Field ${BTN_ADD}" "HWND"

  493. ;; 显示[添加到主机列表]

  494. ShowWindow $2 1

  495. EnableWindow $2 1

  496. !insertmacro EnableTXTEdit $2 1 ;;可用编辑文本框

  497. !insertmacro EnableGlobalBtn $2 0 ;;隐藏全局操作按钮区-->显示临时编辑帮助区

  498. System::Call "user32::SetFocus(i $HWND_TXT_HOST)i" ;;设置焦点

  499. Abort ;${Break}

  500. ${Break}

  501. ##############################################################

  502. ${Case} ${BTN_IMPORT_HOSTLIST}

  503. ;MessageBox MB_OK "BTN_IMPORT_HOSTLIST" # 按下 [导入备份列表] 按钮

  504. ##############################################################

  505. ${Do}

  506. ;FindWindow $4 '#32770' '${STR_CAPTION}'

  507. ;ShowWindow $4 0

  508. Dialogs::Open "${STR_OPEN_FILE_EXT}" 1 "${STR_OPEN_CAPTION}" $EXEDIR ${VAR_OPENSAVE_ID}

  509. ${if} ${VAR_OPENSAVE} == 0

  510. ${ExitDo}

  511. ${else}

  512. System::Call 'kernel32::_lopen(t "${VAR_OPENSAVE}", i 0) i .r1'

  513. System::Call 'kernel32::GetFileSize(i $1, i) i .r2'

  514. IntOp $2 $2 / 1024

  515. System::Call 'kernel32::_lclose(i $1) i'

  516. ${if} $2 < 512

  517. ReadINIStr $1 ${VAR_OPENSAVE} "Main" "Type"

  518. ${if} $1 == "HostList Backup File"

  519. System::Call 'user32::MessageBeep(i) i (0x00000000)'

  520. Messagebox::show MB_DEFBUTTON2|MB_TOPMOST "导入确认"

  521. "$SYSDIRShell32.dll,146"

  522. "你确定要从备份文件 $"${VAR_OPENSAVE}$" 中导入主机列表吗? "

  523. "确定 (&Y)" "不要 (&N)"

  524. Pop $R0

  525. ${if} $R0 != "1"

  526. Abort

  527. ${endif}

  528. Call ImprotHostlist2Reg

  529. ;ShowWindow $4 1

  530. Pop $2 ;;返回导入主机数

  531. ${if} $2 > 0 ;;导入了新主机

  532. !insertmacro EnableGlobalBtn $2 1

  533. !insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框

  534. ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"

  535. EnableWindow $1 1

  536. SendMessage $1 ${CB_SHOWDROPDOWN} 1 1

  537. ${endif}

  538. ;;开始转化导入

  539. ${ExitDo}

  540. ${endif}

  541. ${endif}

  542. System::Call 'user32::MessageBeep(i) i (0x00000101)'

  543. Messagebox::show MB_ICONHAND|MB_TOPMOST "添加到主机列表" "$SYSDIRShell32.dll,200"

  544. "${MSG_OPEN_ERROR} "

  545. "确定 (&O)"

  546. Pop $R0

  547. ${endif}

  548. ${Loop}

  549. !insertmacro ShowReg2Txt $1 $2 $3

  550. ${Break}

  551. ##############################################################

  552. ${Case} ${BTN_EXPORT_HOSTLIST}

  553. ;MessageBox MB_OK "BTN_EXPORT_HOSTLIST" # 按下 [备份主机列表] 按钮

  554. ##############################################################

  555. ReadINIStr $4 "${MUI_INIFILE}" "Field ${BTN_EXPORT_HOSTLIST}" Text

  556. StrCpy $4 "$4" 4

  557. ${if} $4 == "放弃"

  558. !insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框

  559. ${if} $COUNTER_HOSTNUM < 1

  560. ReadINIStr $2 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"

  561. EnableWindow $2 0

  562. ReadINIStr $2 "${MUI_INIFILE}" "Field ${GB_GLOBAL}" "HWND"

  563. SendMessage $2 ${WM_SETTEXT} 0 "STR:帮助信息"

  564. ReadINIStr $2 "${MUI_INIFILE}" "Field ${LAB_HELP}" "HWND"

  565. ShowWindow $2 1

  566. SetCtlColors $2 0x004040 transparent

  567. ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND"

  568. ShowWindow $2 0

  569. ${else}

  570. !insertmacro EnableGlobalBtn $2 1

  571. ${endif}

  572. ${else}

  573. ${if} $COUNTER_HOSTNUM < 1

  574. System::Call 'user32::MessageBeep(i) i (0x00000001)'

  575. MessageBox::show MB_ICONHAND|MB_TOPMOST "备份主机列表" "$SYSDIRshell32.dll,234"

  576. "当前没有任何主机信息,无需备份。 "

  577. "确定 (&O)"

  578. Pop $R0

  579. Abort

  580. ${endif}

  581. FindWindow $4 '#32770' '${STR_CAPTION}'

  582. Dialogs::Save "${STR_SAVE_FILE_EXT}" 1 "${STR_SAVE_CAPTION}" $EXEDIR ${VAR_OPENSAVE_ID}

  583. ${if} ${VAR_OPENSAVE} == 0

  584. Abort

  585. ${else}

  586. StrCpy $1 "${VAR_OPENSAVE}" "" -5

  587. StrCpy $2 $1 "" -4

  588. ${if} $2 == ".reg"

  589. ExecWait `"$WINDIRRegedit.exe" /s /e "${VAR_OPENSAVE}" "${REG_ME_HOSTLIST_FULL}"`

  590. ShowWindow $4 0

  591. System::Call 'user32::MessageBeep(i) i (0x00000001)'

  592. MessageBox::show MB_ICONHAND|MB_TOPMOST "备份为REG格式" "$SYSDIRshell32.dll,178"

  593. "已成功将当前列表中共 $COUNTER_HOSTNUM 个主机信息备份到指定的注册表文件中。 "

  594. "确定 (&O)"

  595. Pop $R0

  596. ShowWindow $4 1

  597. Abort

  598. ${else}

  599. ${if} $1 != ".hlbf"

  600. StrCpy ${VAR_OPENSAVE} "${VAR_OPENSAVE}.hlbf"

  601. ${endif}

  602. ShowWindow $4 0

  603. Call SaveHostlist2INI

  604. System::Call 'user32::MessageBeep(i) i (0x00000001)'

  605. MessageBox::show MB_ICONHAND|MB_TOPMOST "备份完成" "$SYSDIRshell32.dll,178"

  606. "已成功将当前列表中共 $COUNTER_HOSTNUM 个主机信息保存到指定的文件中。 "

  607. "确定 (&O)"

  608. Pop $R0

  609. ShowWindow $4 1

  610. ${endif}

  611. ${endif}

  612. ${endif}

  613. ;ShowWindow $1 1

  614. !insertmacro ShowReg2Txt $1 $2 $3

  615. ${Break}

  616. ##############################################################

  617. ${Case} ${BTN_DELETE}

  618. ;MessageBox MB_OK "BTN_DELETE" # 按下 [删除主机] 按钮

  619. ##############################################################

  620. ReadINIStr $3 "${MUI_INIFILE}" "Field ${DL_HOST}" "State"

  621. System::Call 'user32::MessageBeep(i) i (0x00000000)'

  622. MessageBox::show MB_ICONHAND|MB_TOPMOST "删除确认" "$SYSDIRShell32.dll,33"

  623. "你确定删除主机标识 $3 对应的主机信息吗? "

  624. "确定 (&O)" "取消 (&C)"

  625. Pop $R0

  626. ${if} $R0 != 1

  627. Abort

  628. ${endif}

  629. DeleteRegKey HKLM "${REG_ME_HOSTLIST}$3"

  630. DeleteRegValue HKLM "${REG_ME_HOSTLIST}" "LastHost"

  631. !insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框

  632. ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"

  633. SendMessage $1 ${CB_GETCURSEL} "" "" $2

  634. SendMessage $1 ${CB_DELETESTRING} "$2" ""

  635. !insertmacro AddHostNum -1

  636. ${if} $COUNTER_HOSTNUM < 1

  637. ;!insertmacro EnableGlobalBtn $2 1

  638. ReadINIStr $2 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"

  639. EnableWindow $2 0

  640. ReadINIStr $2 "${MUI_INIFILE}" "Field ${GB_GLOBAL}" "HWND"

  641. SendMessage $2 ${WM_SETTEXT} 0 "STR:帮助信息"

  642. ReadINIStr $2 "${MUI_INIFILE}" "Field ${LAB_HELP}" "HWND"

  643. SetCtlColors $2 0x004040 transparent

  644. ShowWindow $2 1

  645. ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_NOTEPAD}" "HWND"

  646. ShowWindow $2 0

  647. ${else}

  648. !insertmacro EnableGlobalBtn $2 1

  649. ${endif}

  650. Call ResetSelectHost

  651. !insertmacro ShowReg2Txt $1 $2 $3

  652. ${Break}

  653. ##############################################################

  654. ${Case} ${BTN_UPDATE}

  655. ;MessageBox MB_OK "BTN_UPDATE" # 按下 [保存更新] 按钮

  656. ##############################################################

  657. ReadINIStr $3 "${MUI_INIFILE}" "Field ${TXT_HOST}" "State"

  658. ${if} $3 == ""

  659. System::Call 'user32::MessageBeep(i) i (0x00000001)'

  660. MessageBox::show MB_ICONHAND|MB_TOPMOST "保存更新" "$SYSDIRshell32.dll,220"

  661. "请填写主机标识。 "

  662. "确定(&O)"

  663. Pop $R0

  664. System::Call "user32::SetFocus(i $HWND_TXT_HOST)i"

  665. Abort

  666. ${else}

  667. ${if} $COUNTER_HOSTNUM < 1

  668. ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"

  669. SendMessage $1 ${CB_GETCURSEL} "" "" $2

  670. SendMessage $1 ${CB_DELETESTRING} "$2" "" ;;删除旧主机标识

  671. !insertmacro AddHostNum 1

  672. DeleteINIStr "${MUI_INIFILE}" "Field ${DL_HOST}" "State"

  673. ${endif}

  674. ReadINIStr $4 "${MUI_INIFILE}" "Field ${DL_HOST}" "State"

  675. ${if} "$3" == "$4"

  676. DeleteRegKey HKLM "${REG_ME_HOSTLIST}$4"

  677. ${else} ;;标识改动

  678. ReadRegStr $1 HKLM "${REG_ME_HOSTLIST}$3" ""

  679. ${if} $1 == "Setted" ;;已有标识

  680. System::Call 'user32::MessageBeep(i) i (0x00000001)'

  681. MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "保存更新"

  682. "$SYSDIRshell32.dll,220"

  683. "主机标识 $"$3$" 已被占用,保存更新将会覆盖原主机信息,是否继续? "

  684. "是 (&Y)" "否 (&N)"

  685. Pop $R0

  686. ${if} $R0 != 1 ;;放弃覆盖

  687. SendMessage $HWND_TXT_HOST ${EM_SETSEL} 255 0

  688. System::Call "user32::SetFocus(i $HWND_TXT_HOST)i"

  689. Abort

  690. ${endif}

  691. ;;要覆盖

  692. ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"

  693. SendMessage $1 ${CB_SELECTSTRING} 0 "STR:$3"

  694. ${else} ;;新的标识

  695. DeleteRegKey HKLM "${REG_ME_HOSTLIST}$4" ;;删除旧主机

  696. ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"

  697. SendMessage $1 ${CB_GETCURSEL} "" "" $2

  698. SendMessage $1 ${CB_DELETESTRING} "$2" "" ;;删除旧主机标识

  699. SendMessage $1 ${CB_ADDSTRING} 0 "STR:$3" ;;添加新标识

  700. SendMessage $1 ${CB_SELECTSTRING} 0 "STR:$3"

  701. ${endif}

  702. ${endif}

  703. !insertmacro EnableGlobalBtn $2 1

  704. !insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框

  705. !insertmacro SaveTxt2Reg $3 $2 $1 ;;保存并处理文本显示

  706. ${endif}

  707. Abort ; ${Break}

  708. ##############################################################

  709. ${Case} ${BTN_ADD}

  710. ;MessageBox MB_OK "BTN_ADD" # 按下 [添加到主机列表] 按钮

  711. ##############################################################

  712. ReadINIStr $3 "${MUI_INIFILE}" "Field ${TXT_HOST}" "State"

  713. ${if} $3 == "" ;没填写主机标识

  714. System::Call 'user32::MessageBeep(i) i (0x00000001)'

  715. Messagebox::show MB_ICONHAND|MB_TOPMOST "添加到主机列表" "$SYSDIRShell32.dll,176"

  716. "请先为当前主机填写一个主机标识,以方便以后在主机标识下拉菜单中选择。 "

  717. "确定(&O)"

  718. Pop $R0

  719. System::Call "user32::SetFocus(i $HWND_TXT_HOST)i"

  720. Abort

  721. ${else} ;;开始添加到操作

  722. ReadRegStr $1 HKLM "${REG_ME_HOSTLIST}$3" ""

  723. ${if} $1 == "Setted"

  724. ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"

  725. SendMessage $1 ${CB_SELECTSTRING} 0 "STR:$3"

  726. System::Call 'user32::MessageBeep(i) i (0x00000001)'

  727. MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "添加到主机列表"

  728. "$SYSDIRshell32.dll,176"

  729. "主机标识 $"$3$" 已被占用,是否将其覆盖? "

  730. "是 (&Y)" "否 (&N)"

  731. Pop $R0

  732. ${if} $R0 != 1 ;;放弃覆盖

  733. SendMessage $HWND_TXT_HOST ${EM_SETSEL} 255 0

  734. System::Call "user32::SetFocus(i $HWND_TXT_HOST)i"

  735. Abort

  736. ${endif}

  737. ;;覆盖

  738. ${else}

  739. ${if} $COUNTER_HOSTNUM < 1

  740. ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"

  741. SendMessage $1 ${CB_GETCURSEL} "" "" $2

  742. SendMessage $1 ${CB_DELETESTRING} "$2" "" ;;删除旧主机标识

  743. ${endif}

  744. !insertmacro AddHostNum 1 ;;全局计数器+1

  745. ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"

  746. SendMessage $1 ${CB_ADDSTRING} 0 "STR:$3"

  747. SendMessage $1 ${CB_SELECTSTRING} -1 "STR:$3"

  748. ${endif}

  749. ;;同步到窗体信息INI文件

  750. WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" State "$3"

  751. !insertmacro EnableGlobalBtn $2 1

  752. !insertmacro EnableTXTEdit $2 0 ;;禁用编辑文本框

  753. !insertmacro SaveTxt2Reg $3 $2 $1 ;;保存并处理文本显示

  754. ${endif}

  755. !insertmacro ShowReg2Txt $1 $2 $3

  756. ${Break}

  757. ##############################################################

  758. ${Case} ${BTN_CHANGE_MAC}

  759. ;MessageBox MB_OK "BTN_CHANGE_MAC" # 按下 [修改MAC] 按钮

  760. ##############################################################

  761. Call GetNetCardsInfo

  762. ReadINIStr $2 "${MUI_INIFILE}" "Field ${TXT_MAC}" "State"

  763. StrCpy $4 "更改为 $"$2$""

  764. ${if} $2 == "${STR_UNSETTED}"

  765. ${orif} $2 == "${STR_ERRORFORMAT}"

  766. StrCpy $2 ""

  767. StrCpy $4 "还原为 $"网卡缺省值$""

  768. ${endif}

  769. ReadINIStr $1 "${MUI_INIFILE}" "Field ${DL_NETCARD}" "State"

  770. ReadINIStr $1 "${MUI_INIFILE}" "$1" "RegKeyIndex"

  771. ReadRegStr $3 HKLM "${REG_NETWORK_ADAPTERS}$1" "NetworkAddress"

  772. Check:

  773. ${if} $3 == $2

  774. System::Call 'user32::MessageBeep(i) i (0x00000002)'

  775. MessageBox::show MB_ICONHAND|MB_TOPMOST "提示" "0,103"

  776. "当前 MAC 信息 已经是你要修改的值,无需重复修改。$r$n$r$n提示:

  777. 你可以 [开启/禁用网络连接] 以刷新 MAC 信息。 $r$n"

  778. "哦 (&O)"

  779. Pop $R0

  780. Abort

  781. ${orif} $3 == ""

  782. ReadRegStr $3 HKLM "${REG_NETWORK_ADAPTERS}$1" "NetCfgInstanceId"

  783. ClearErrors

  784. ReadINIStr $3 ${MUI_INIFILE} "$3" "USING MAC"

  785. IfErrors +2

  786. Goto Check ;;再检测一次

  787. StrCpy $3 "网卡缺省值"

  788. ${endif}

  789. System::Call 'user32::MessageBeep(i) i (0x00000001)'

  790. MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "修改 MAC 确认"

  791. "$SYSDIRshell32.dll,24"

  792. "你确定要将当前 MAC 信息 $"$3$" $4 吗?"

  793. "确定 (&O)" "不要 (&C)"

  794. Pop $R0

  795. ${if} $R0 != 1 ;;不修改

  796. Abort

  797. ${endif}

  798. ${if} $2 == ""

  799. DeleteRegValue HKLM "${REG_NETWORK_ADAPTERS}$1" "NetworkAddress"

  800. ${else}

  801. WriteRegStr HKLM "${REG_NETWORK_ADAPTERS}$1" "NetworkAddress" "$2"

  802. ${endif}

  803. System::Call 'user32::MessageBeep(i) i (0x00000001)'

  804. MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "MAC 修改成功"

  805. "$SYSDIRshell32.dll,137"

  806. "MAC 信息已经成功更改,是否要立刻 [开启/禁用网络连接] 以生效更新? "

  807. "是 (&Y)" "否 (&N)"

  808. Pop $R0

  809. ${if} $R0 == 1

  810. FindWindow $4 '#32770' '${STR_CAPTION}'

  811. ShowWindow $4 2

  812. StrCpy $R0 "ExecTwice"

  813. Call RefreshConnection

  814. StrCpy $R0 ""

  815. ShowWindow $4 1

  816. ${endif}

  817. Abort

  818. ;${Break}

  819. ##############################################################

  820. ${Case} ${BTN_CHANGE_IP}

  821. ;MessageBox MB_OK "BTN_CHANGE_MAC" # 按下 [修改IP] 按钮

  822. ##############################################################

  823. ReadINIStr $2 ${MUI_INIFILE} "Field ${DL_NETCARD}" State

  824. ReadINIStr $2 ${MUI_INIFILE} "$2" "InstanceId"

  825. ReadRegStr $3 HKLM "${REG_NETWORK_CONNECTIONS}$2Connection" "Name"

  826. ReadINIStr $2 "${MUI_INIFILE}" "Field ${DL_HOST}" "State"

  827. System::Call 'user32::MessageBeep(i) i (0x00000001)'

  828. MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "TCP/IP信息修改确认" "0,103"

  829. "确定要将主机 “$2” 的 TCP/IP 信息修改到 “$3” 属性设置吗? "

  830. "是 (&Y)" "否 (&N)"

  831. Pop $R0

  832. ${if} $R0 != 1

  833. Abort

  834. ${endif}

  835. StrCpy $1 "netsh interface ip set address $"$3$" static"

  836. !insertmacro SetOneInfoTXT $2 "TXT_IP" " IP 地址"

  837. StrCpy $1 "$1 $2"

  838. !insertmacro SetOneInfoTXT $2 "TXT_MASK" "子网掩码"

  839. StrCpy $1 "$1 $2"

  840. !insertmacro SetOneInfoTXT $2 "TXT_NETGATE" "默认网关"

  841. StrCpy $1 "$1 $2 1"

  842. !insertmacro SetOneInfoTXT $2 "TXT_DNS" "首选DNS"

  843. StrCpy $2 "netsh interface ip set dns $"$3$" static $2 primary"

  844. ;;最小化窗口,防止用户等待乱点

  845. FindWindow $4 '#32770' '${STR_CAPTION}'

  846. ShowWindow $4 2

  847. Sleep 100

  848. Banner::show /NOUNLOAD "正在更改当前网络连接的 TCP/IP 信息,请稍等……"

  849. nsExec::ExecToStack /TIMEOUT=30000 "$1"

  850. Pop $3

  851. StrCmp $3 "timeout" 0 +3

  852. StrCpy $3 "执行超时,请重试! "

  853. Goto Fail

  854. Pop $3

  855. StrCpy $3 $3 -4

  856. ${if} $3 == "Ok."

  857. ${orif} $3 == "确定。"

  858. nsExec::ExecToStack /TIMEOUT=20000 "$2"

  859. Pop $3

  860. StrCmp $3 "timeout" 0 +3

  861. StrCpy $3 "执行超时,请重试! "

  862. Goto DNS_Fail

  863. Pop $3

  864. StrCpy $3 $3 -4

  865. ${if} $3 == "Ok."

  866. ${orif} $3 == "确定。"

  867. Banner::getWindow /NOUNLOAD

  868. Pop $R0

  869. ShowWindow $R0 0

  870. ReadINIStr $2 ${MUI_INIFILE} "Field ${DL_NETCARD}" State

  871. Push $2

  872. Call GetTcpIpInfo

  873. System::Call 'user32::MessageBeep(i) i (0x00000001)'

  874. MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "修改 IP 成功" "$SYSDIRshell32.dll,14"

  875. "所选主机的 TCP/IP 信息 已被成功应用到指定的网络连接。 "

  876. "谢谢 (&T)"

  877. Pop $R0

  878. ShowWindow $4 1

  879. Banner::destroy

  880. Abort

  881. ${else}

  882. DNS_Fail:

  883. Banner::getWindow /NOUNLOAD

  884. Pop $R0

  885. ShowWindow $R0 0

  886. System::Call 'user32::MessageBeep(i) i (0x00000001)'

  887. MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "更改失败" "$SYSDIRshell32.dll,18"

  888. "DNS 更改失败:$3 "

  889. "确定 (&O)"

  890. Pop $R0

  891. ShowWindow $4 1

  892. Banner::destroy

  893. Abort

  894. ${endif}

  895. ${endif}

  896. Fail:

  897. Banner::getWindow /NOUNLOAD

  898. Pop $R0

  899. ShowWindow $R0 0

  900. System::Call 'user32::MessageBeep(i) i (0x00000001)'

  901. MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "更改失败" "$SYSDIRshell32.dll,18"

  902. "更改失败:$3 "

  903. "确定 (&O)"

  904. Pop $R0

  905. ShowWindow $4 1

  906. Banner::destroy

  907. Abort

  908. ;${Break}

  909. ##############################################################

  910. ${Case} ${BTN_MINIMIZE}

  911. ;MessageBox MB_OK "BTN_MINIMIZE" # 按下 [最小化] 按钮

  912. ##############################################################

  913. FindWindow $4 '#32770' '${STR_CAPTION}'

  914. ShowWindow $4 2

  915. ${Break}

  916. ##############################################################

  917. ${Case} ${BTN_RF_CONNECTION}

  918. ;MessageBox MB_OK "BTN_RF_CONNECTION" # 按下 [开启禁用网络] 按钮

  919. ##############################################################

  920. Call RefreshConnection

  921. Abort

  922. ;${Break}

  923. ${EndSwitch}

  924. Abort ;;

  925. ;;页面消息回调函数结束

  926. FunctionEnd ;LeaveCustom

  927. ##############################################################################

  928. ##############################################################

  929. # 功能 -- 获取当前 TCP/IP 信息

  930. ;!macro GetRegMultiStr --(预先)子宏

  931. ;Function SubCallBack --(预先)子函数

  932. ;Function GetTcpIpInfo --主功能

  933. ##############################################################

  934. !macro GetRegMultiStr Arg_reg.value Arg_ini.value

  935. StrCpy $3 "${Arg_ini.value}"

  936. GetFunctionAddress $2 SubCallBack

  937. ${ReadRegMultiStr} ${HKLM} "${REG_NETWORK_TCPIP}$1" "${Arg_reg.value}" $2

  938. ClearErrors

  939. !macroend

  940. Function SubCallBack

  941. Exch $2

  942. ${if} $2 == ""

  943. GetErrorLevel $2

  944. ;MessageBox MB_OK "Error Level: $2"

  945. ${else}

  946. ;MessageBox MB_OK "$3: $2"

  947. WriteINIStr ${MUI_INIFILE} "$0" "$3" "$2"

  948. ${endif}

  949. Pop $2

  950. FunctionEnd ;SubCallBack

  951. Function GetTcpIpInfo

  952. Exch $0

  953. Push $1

  954. Push $2

  955. Push $3

  956. ReadINIStr $1 ${MUI_INIFILE} "$0" "InstanceId"

  957. !insertmacro GetRegMultiStr "IPAddress" "IP"

  958. !insertmacro GetRegMultiStr "SubnetMask" "MASK"

  959. !insertmacro GetRegMultiStr "DefaultGateway" "NETGATE"

  960. ReadRegStr $2 HKLM "${REG_NETWORK_TCPIP}$1" "NameServer"

  961. StrCpy $1 0

  962. ${Do}

  963. StrCpy $3 $2 1 $1

  964. ${IfThen} $3 == ',' ${|} ${ExitDo} ${|}

  965. IntOp $1 $1 + 1

  966. ${LoopUntil} $3 == ""

  967. StrCpy $2 $2 $1

  968. WriteINIStr ${MUI_INIFILE} "$0" "DNS" "$2"

  969. Pop $3

  970. Pop $2

  971. Pop $1

  972. Pop $0

  973. FunctionEnd ;GetTcpIpInfo

  974. ##############################################################

  975. # 功能 -- 初始化数据

  976. # Function InitNetCardInfo

  977. # Function InitHostList

  978. # Function InitLastHostInfo

  979. ##############################################################

  980. !define STR_SEPARATOR ``

  981. Function GetNetCardsInfo

  982. Push $0

  983. Push $1

  984. Push $2

  985. Push $3

  986. Push $4

  987. Push $5

  988. Push $6

  989. Push $7

  990. System::Alloc 4096

  991. Pop $3

  992. System::Call 'iphlpapi::GetAdaptersInfo(i r3r2, *l 4096 r1) i.r0'

  993. StrCmp $0 0 0 finish

  994. loop:

  995. StrCmp $2 0 finish

  996. System::Call '*$2(i.r2,i,&t260.r4, &t132 0, i 0, l.r5)'

  997. System::Int64Op $5 % 0x100000000

  998. Pop $6

  999. IntFmt $6 "%08X" $6

  1000. System::Int64Op $5 - $6

  1001. Pop $7

  1002. System::Int64Op $7 / 0x100000000

  1003. Pop $7

  1004. IntFmt $7 "%04X" $7

  1005. StrCpy $7 "$7$6"

  1006. StrCpy $1 $7 2 10

  1007. StrCpy $0 $1

  1008. StrCpy $1 $7 2 8

  1009. StrCpy $0 '$0${STR_SEPARATOR}$1'

  1010. StrCpy $1 $7 2 6

  1011. StrCpy $0 '$0${STR_SEPARATOR}$1'

  1012. StrCpy $1 $7 2 4

  1013. StrCpy $0 '$0${STR_SEPARATOR}$1'

  1014. StrCpy $1 $7 2 2

  1015. StrCpy $0 '$0${STR_SEPARATOR}$1'

  1016. StrCpy $1 $7 2 0

  1017. StrCpy $0 '$0${STR_SEPARATOR}$1'

  1018. WriteINIStr ${MUI_INIFILE} "$4" "USING MAC" "$0"

  1019. Goto loop

  1020. finish:

  1021. System::Free $3

  1022. System::Free 0

  1023. Pop $7

  1024. Pop $6

  1025. Pop $5

  1026. Pop $4

  1027. Pop $3

  1028. Pop $2

  1029. Pop $1

  1030. Pop $0

  1031. FunctionEnd ;;GetNetCardsInfo

  1032. Function InitNetCardInfo

  1033. Push $0

  1034. Push $1

  1035. Push $2

  1036. Push $3

  1037. StrCpy $0 0

  1038. WriteINIStr ${MUI_INIFILE} "Settings" NetCardNum 0

  1039. WriteINIStr ${MUI_INIFILE} "Field ${DL_NETCARD}" ListItems ""

  1040. ${Do}

  1041. EnumRegKey $1 HKLM "${REG_NETWORK_ADAPTERS}" $0

  1042. ${IfThen} $1 == "" ${|} ${ExitDo} ${|}

  1043. ReadRegStr $2 HKLM "${REG_NETWORK_ADAPTERS}$1NdiInterfaces" "LowerRange"

  1044. ${if} $2 == "ethernet"

  1045. ReadRegStr $2 HKLM "${REG_NETWORK_ADAPTERS}$1" "DriverDesc"

  1046. WriteINIStr ${MUI_INIFILE} "Field ${DL_NETCARD}" State "$2"

  1047. WriteINIStr ${MUI_INIFILE} "$2" "RegKeyIndex" "$1"

  1048. ReadRegStr $3 HKLM "${REG_NETWORK_ADAPTERS}$1" "NetworkAddress"

  1049. ${if} $3 == ""

  1050. StrCpy $3 "${STR_UNSETTED}"

  1051. ${endif}

  1052. WriteINIStr ${MUI_INIFILE} "$2" "Mac" "$3"

  1053. ReadRegStr $3 HKLM "${REG_NETWORK_ADAPTERS}$1" "NetCfgInstanceId"

  1054. WriteINIStr ${MUI_INIFILE} "$2" "InstanceId" "$3"

  1055. ReadINIStr $3 ${MUI_INIFILE} "$3" "USING MAC"

  1056. ${if} $3 != ""

  1057. WriteINIStr ${MUI_INIFILE} "$2" "MAC" "$3"

  1058. ${endif}

  1059. Push $2

  1060. Call GetTcpIpInfo

  1061. ReadINIStr $3 ${MUI_INIFILE} "Field ${DL_NETCARD}" ListItems

  1062. ${if} $3 != ""

  1063. StrCpy $2 "$2|$3"

  1064. ${endif}

  1065. WriteINIStr ${MUI_INIFILE} "Field ${DL_NETCARD}" ListItems "$2"

  1066. ReadINIStr $3 ${MUI_INIFILE} "Settings" NetCardNum

  1067. IntOp $3 $3 + 1

  1068. WriteINIStr ${MUI_INIFILE} "Settings" NetCardNum $3

  1069. ${endif}

  1070. IntOp $0 $0 + 1

  1071. ${Loop}

  1072. Pop $3

  1073. Pop $2

  1074. Pop $1

  1075. Pop $0

  1076. FunctionEnd ;;InitNetCardInfo

  1077. Function InitHostList

  1078. Push $0

  1079. Push $1

  1080. Push $2

  1081. StrCpy $0 0

  1082. WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" ListItems "" ;;初始化主机列表

  1083. ${Do}

  1084. EnumRegKey $1 HKLM "${REG_ME_HOSTLIST}" $0

  1085. ${IfThen} $1 == "" ${|} ${ExitDo} ${|}

  1086. ;MessageBox MB_OK "$1"

  1087. ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$1" ""

  1088. ${if} $2 == "Setted" ;;检验是否合法

  1089. WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" State "$1"

  1090. ReadINIStr $2 ${MUI_INIFILE} "Field ${DL_HOST}" ListItems

  1091. ${if} $2 != ""

  1092. StrCpy $1 "$1|$2" ;合并/主机标识项目

  1093. ${endif}

  1094. WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" ListItems "$1"

  1095. !insertmacro AddHostNum 1

  1096. ${endif}

  1097. IntOp $0 $0 + 1

  1098. ${Loop}

  1099. Pop $2

  1100. Pop $1

  1101. Pop $0

  1102. FunctionEnd ;;InitHostList

  1103. Function ResetSelectHost

  1104. Push $0

  1105. Push $1

  1106. Push $2

  1107. ReadINIStr $2 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"

  1108. ${if} $COUNTER_HOSTNUM < 1 ;无主机信息

  1109. EnableWindow $2 0

  1110. SendMessage $1 ${CB_ADDSTRING} 0 "STR:${STR_DEFAULT_HOST}"

  1111. SendMessage $1 ${CB_SELECTSTRING} 0 "STR:${STR_DEFAULT_HOST}"

  1112. ${else} ;有主机信息

  1113. EnableWindow $2 1

  1114. StrCpy $0 0

  1115. ${Do}

  1116. EnumRegKey $1 HKLM "${REG_ME_HOSTLIST}" $0

  1117. ${IfThen} $1 == "" ${|} ${ExitDo} ${|}

  1118. ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$1" ""

  1119. ${if} $2 == "Setted" ;;检验是否合法

  1120. ReadINIStr $2 ${MUI_INIFILE} "Field ${DL_HOST}" HWND

  1121. SendMessage $2 ${CB_SELECTSTRING} 0 "STR:$1"

  1122. WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" State "$1"

  1123. ${ExitDo}

  1124. ${endif}

  1125. IntOp $0 $0 + 1

  1126. ${Loop}

  1127. ${endif}

  1128. Pop $2

  1129. Pop $1

  1130. Pop $0

  1131. FunctionEnd ;;ResetSelectHost

  1132. Function InitLastHostInfo ;;获取首选主机信息

  1133. Push $0

  1134. Push $1

  1135. Push $2

  1136. ;;初始化主机下拉列表控件首选项

  1137. ${if} $COUNTER_HOSTNUM > 0 ;有主机信息

  1138. WriteINIStr ${MUI_INIFILE} "Field ${GB_SELHOST}" Text "选择主机 ( 当前共 $COUNTER_HOSTNUM 个主机信息 )"

  1139. WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" Flags "Notify" ;初始可用主机下拉列表控件

  1140. ReadRegStr $0 HKLM "${REG_ME_HOSTLIST}" "LastHost"

  1141. ReadRegStr $1 HKLM "${REG_ME_HOSTLIST}$0" ""

  1142. ${if} $1 == "Setted"

  1143. WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" State "$0"

  1144. ${endif}

  1145. ReadINIStr $0 ${MUI_INIFILE} "Field ${DL_HOST}" State

  1146. WriteINIStr ${MUI_INIFILE} "Field ${TXT_HOST}" State $0

  1147. ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$0" "MAC"

  1148. ${if} $2 == ""

  1149. ${orif} $2 == "${STR_UNSETTED}"

  1150. StrCpy $2 "${STR_UNSETTED}"

  1151. ${else}

  1152. StrLen $3 "$2"

  1153. ${if} $3 != 12

  1154. StrCpy $2 "${STR_ERRORFORMAT}"

  1155. ${endif}

  1156. ${endif}

  1157. WriteINIStr ${MUI_INIFILE} "Field ${TXT_MAC}" State $2

  1158. ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$0" "IP"

  1159. ${if} $2 == ""

  1160. StrCpy $2 "${STR_UNSETTED}"

  1161. ${endif}

  1162. WriteINIStr ${MUI_INIFILE} "Field ${TXT_IP}" State $2

  1163. ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$0" "MASK"

  1164. ${if} $2 == ""

  1165. StrCpy $2 "${STR_UNSETTED}"

  1166. ${endif}

  1167. WriteINIStr ${MUI_INIFILE} "Field ${TXT_MASK}" State $2

  1168. ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$0" "NETGATE"

  1169. ${if} $2 == ""

  1170. StrCpy $2 "${STR_UNSETTED}"

  1171. ${endif}

  1172. WriteINIStr ${MUI_INIFILE} "Field ${TXT_NETGATE}" State $2

  1173. ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$0" "DNS"

  1174. ${if} $2 == ""

  1175. StrCpy $2 "${STR_UNSETTED}"

  1176. ${endif}

  1177. WriteINIStr ${MUI_INIFILE} "Field ${TXT_DNS}" State $2

  1178. ${else} ;无主机信息

  1179. WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" State "${STR_DEFAULT_HOST}"

  1180. WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" ListItems "${STR_DEFAULT_HOST}"

  1181. ReadRegStr $2 HKLM "${REG_WINLOGON}" "AltDefaultDomainName"

  1182. WriteINIStr ${MUI_INIFILE} "Field ${TXT_HOST}" State $2

  1183. ReadINIStr $1 ${MUI_INIFILE} "Field ${DL_NETCARD}" State

  1184. ReadINIStr $2 ${MUI_INIFILE} "$1" "MAC"

  1185. WriteINIStr ${MUI_INIFILE} "Field ${TXT_MAC}" State $2

  1186. ReadINIStr $2 ${MUI_INIFILE} "$1" "IP"

  1187. WriteINIStr ${MUI_INIFILE} "Field ${TXT_IP}" State $2

  1188. ReadINIStr $2 ${MUI_INIFILE} "$1" "MASK"

  1189. WriteINIStr ${MUI_INIFILE} "Field ${TXT_MASK}" State $2

  1190. ReadINIStr $2 ${MUI_INIFILE} "$1" "NETGATE"

  1191. WriteINIStr ${MUI_INIFILE} "Field ${TXT_NETGATE}" State $2

  1192. ReadINIStr $2 ${MUI_INIFILE} "$1" "DNS"

  1193. WriteINIStr ${MUI_INIFILE} "Field ${TXT_DNS}" State $2

  1194. ${endif}

  1195. Pop $2

  1196. Pop $1

  1197. Pop $0

  1198. FunctionEnd ;;InitLastHostInfo

  1199. ##############################################################

  1200. # 功能 -- 刷新(开启/禁用) 网络连接

  1201. # Function RefreshConnection

  1202. ##############################################################

  1203. Function RefreshConnection

  1204. Push $0

  1205. Push $1

  1206. Push $2

  1207. Push $3

  1208. Push $4

  1209. System::Call "advapi32::GetUserName(t .r0, *i ${NSIS_MAX_STRLEN} r1) i.r2"

  1210. ;MessageBox MB_OK "UserName: $0 | CharsNm: $1"

  1211. StrCpy $2 $0 2

  1212. Loop:

  1213. IfFileExists "$TEMP$2$1.tmp" 0 Pass

  1214. IntOp $1 $1 + 100

  1215. Goto Loop

  1216. Pass:

  1217. StrCpy $1 "$TEMP$2$1.tmp"

  1218. ReadINIStr $2 ${MUI_INIFILE} "Field ${DL_NETCARD}" State

  1219. ReadINIStr $2 ${MUI_INIFILE} "$2" "InstanceId"

  1220. ReadRegStr $2 HKLM "${REG_NETWORK_CONNECTIONS}$2Connection" "Name"

  1221. ReadRegStr $3 HKCR "${REG_NETWORK_FOLDERNAME}" ""

  1222. !insertmacro CreateVBScript "$1" "$2" "$3"

  1223. Sleep 50 ;;稍等I/O结束

  1224. ;FindWindow $4 '#32770' '${STR_CAPTION}'

  1225. ;ShowWindow $4 2

  1226. ;MessageBox MB_OK "VB脚本已经生成完毕,点击确定打开,查看:$1"

  1227. ;ExecWait `"$SYSDIRnotepad.exe" "$1"`

  1228. ;Quit

  1229. ;ShowWindow $4 1

  1230. ExecWait `"$SYSDIRWScript.exe" /B /E:vbs "$1"`

  1231. ${If} $R0 == "ExecTwice"

  1232. Sleep 5000 ;;平缓5秒

  1233. ExecWait `"$SYSDIRWScript.exe" /B /E:vbs "$1"`

  1234. ${endif}

  1235. Delete "$1"

  1236. Call GetNetCardsInfo

  1237. Pop $4

  1238. Pop $3

  1239. Pop $2

  1240. Pop $1

  1241. Pop $0

  1242. FunctionEnd ;;RefreshConnection

  1243. ##############################################################

  1244. # 功能 -- 导出主机列表备份 / 导入主机列表备份

  1245. #

  1246. # Function SaveHostlist2INI

  1247. # Function ImprotHostlist2REG

  1248. ##############################################################

  1249. Function SaveHostlist2INI

  1250. Push $0

  1251. Push $1

  1252. Push $2

  1253. Push $3

  1254. FileOpen $2 "${VAR_OPENSAVE}" w

  1255. FileSeek $2 0 END

  1256. FileWrite $2 "${STR_SAVE_FILE_NOTE}"

  1257. FileClose $2

  1258. StrCpy $0 0

  1259. WriteINIStr ${VAR_OPENSAVE} "Main" HostNum 0

  1260. WriteINIStr ${VAR_OPENSAVE} "Main" Type "HostList Backup File"

  1261. WriteINIStr ${MUI_INIFILE} "Field ${DL_HOST}" ListItems ""

  1262. ${Do}

  1263. EnumRegKey $1 HKLM "${REG_ME_HOSTLIST}" $0

  1264. ${IfThen} $1 == "" ${|} ${ExitDo} ${|}

  1265. ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$1" ""

  1266. ${if} $2 == "Setted"

  1267. ;${orif} $2 == "Hidden"

  1268. ReadINIStr $3 ${VAR_OPENSAVE} "Main" HostNum

  1269. IntOp $3 $3 + 1

  1270. WriteINIStr ${VAR_OPENSAVE} "Main" HostNum $3

  1271. FileOpen $2 "${VAR_OPENSAVE}" a

  1272. FileSeek $2 0 END

  1273. FileWrite $2 "$r$n"

  1274. FileClose $2

  1275. WriteINIStr ${VAR_OPENSAVE} "Host $3" FLAG "Setted"

  1276. WriteINIStr ${VAR_OPENSAVE} "Host $3" NAME "$1"

  1277. ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$1" "MAC"

  1278. ${if} $2 == "${STR_ERRORFORMAT}"

  1279. ${orif} $2 == "${STR_UNSETTED}"

  1280. StrCpy $2 ""

  1281. ${endif}

  1282. WriteINIStr ${VAR_OPENSAVE} "Host $3" MAC "$2"

  1283. ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$1" "IP"

  1284. ${if} $2 == "${STR_UNSETTED}"

  1285. StrCpy $2 ""

  1286. ${endif}

  1287. WriteINIStr ${VAR_OPENSAVE} "Host $3" IP "$2"

  1288. ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$1" "MASK"

  1289. ${if} $2 == "${STR_UNSETTED}"

  1290. StrCpy $2 ""

  1291. ${endif}

  1292. WriteINIStr ${VAR_OPENSAVE} "Host $3" MASK "$2"

  1293. ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$1" "NETGATE"

  1294. ${if} $2 == "${STR_UNSETTED}"

  1295. StrCpy $2 ""

  1296. ${endif}

  1297. WriteINIStr ${VAR_OPENSAVE} "Host $3" NETGATE "$2"

  1298. ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}$1" "DNS"

  1299. ${if} $2 == "${STR_UNSETTED}"

  1300. StrCpy $2 ""

  1301. ${endif}

  1302. WriteINIStr ${VAR_OPENSAVE} "Host $3" DNS "$2"

  1303. ${endif}

  1304. IntOp $0 $0 + 1

  1305. ${Loop}

  1306. ReadRegStr $2 HKLM "${REG_ME_HOSTLIST}" "LastHost"

  1307. WriteINIStr ${VAR_OPENSAVE} "Main" "RectHost" "$2"

  1308. WriteINIStr ${VAR_OPENSAVE} "Main" "Type" "HostList Backup File"

  1309. Pop $3

  1310. Pop $2

  1311. Pop $1

  1312. Pop $0

  1313. FunctionEnd ;;SaveHostlist2INI

  1314. Function ImprotHostlist2REG

  1315. Push $0

  1316. Push $1

  1317. Push $2

  1318. Push $3

  1319. Push $4

  1320. StrCpy $R4 -1 ;;临时选择标记容器

  1321. StrCpy $0 0 ;成功导入计数器

  1322. ReadINIStr $4 ${VAR_OPENSAVE} "Main" HostNum

  1323. ${if} $4 <= 0

  1324. MessageBox MB_OK|MB_ICONEXCLAMATION|MB_TOPMOST "主机列表备份文件中没有任何主机信息,无法导入! "

  1325. ${else}

  1326. ${if} $COUNTER_HOSTNUM < 1

  1327. ReadINIStr $3 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"

  1328. SendMessage $3 ${CB_DELETESTRING} 0 "" ;;删除旧主机标识

  1329. ${endif}

  1330. ;MessageBox MB_YESNO "继续?" IDYES +2

  1331. ;Quit

  1332. ${for} $1 1 $4

  1333. ReadINIStr $2 ${VAR_OPENSAVE} "Host $1" FLAG

  1334. ${if} $2 != "Setted" ;;检测项目设置

  1335. ${Continue}

  1336. ${endif}

  1337. ReadINIStr $2 ${VAR_OPENSAVE} "Host $1" NAME

  1338. ReadRegStr $3 HKLM "${REG_ME_HOSTLIST}$2" ""

  1339. ${if} $3 == "Setted"

  1340. ;${orif} $3 == "Hidden"

  1341. ${if} $R4 == "NOTOALL"

  1342. ${Continue}

  1343. ${orif} $R4 == "YESTOALL"

  1344. Goto OverW

  1345. ${endif}

  1346. System::Call 'user32::MessageBeep(i) i (0x00000001)'

  1347. MessageBox::show MB_ICONHAND|MB_DEFBUTTON2|MB_TOPMOST "导入主机列表" "$SYSDIRshell32.dll,23"

  1348. "主机标识 $2 已经存在,是否将原主机信息覆盖? "

  1349. " 是 " "全是" "否" "全否"

  1350. Pop $R0

  1351. ${if} $R0 == 2

  1352. StrCpy $R4 "YESTOALL"

  1353. Goto OverW

  1354. ${elseif} $R0 == 4

  1355. StrCpy $R4 "NOTOALL"

  1356. ${elseif} $R0 == 1

  1357. Goto OverW

  1358. ${endif}

  1359. ${Continue}

  1360. OverW:

  1361. ${else}

  1362. ReadINIStr $3 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"

  1363. SendMessage $3 ${CB_ADDSTRING} 0 "STR:$2" ;;添加新标识

  1364. !insertmacro AddHostNum 1

  1365. ${endif}

  1366. ReadINIStr $3 ${VAR_OPENSAVE} "Host $1" FLAG

  1367. WriteRegStr HKLM "${REG_ME_HOSTLIST}$2" "" $3

  1368. ReadINIStr $3 ${VAR_OPENSAVE} "Host $1" MAC

  1369. WriteRegStr HKLM "${REG_ME_HOSTLIST}$2" "MAC" $3

  1370. ReadINIStr $3 ${VAR_OPENSAVE} "Host $1" IP

  1371. WriteRegStr HKLM "${REG_ME_HOSTLIST}$2" "IP" $3

  1372. ReadINIStr $3 ${VAR_OPENSAVE} "Host $1" MASK

  1373. WriteRegStr HKLM "${REG_ME_HOSTLIST}$2" "MASK" $3

  1374. ReadINIStr $3 ${VAR_OPENSAVE} "Host $1" NETGATE

  1375. WriteRegStr HKLM "${REG_ME_HOSTLIST}$2" "NETGATE" $3

  1376. ReadINIStr $3 ${VAR_OPENSAVE} "Host $1" DNS

  1377. WriteRegStr HKLM "${REG_ME_HOSTLIST}$2" "DNS" $3

  1378. IntOp $0 $0 + 1

  1379. ${Next}

  1380. ReadINIStr $4 ${VAR_OPENSAVE} "Main" RectHost

  1381. ReadRegStr $3 HKLM "${REG_ME_HOSTLIST}$4" ""

  1382. ${if} $3 != "Setted"

  1383. StrCpy $4 $2

  1384. ${endif}

  1385. WriteRegStr HKLM "${REG_ME_HOSTLIST}" "LastHost" "$4"

  1386. ReadINIStr $3 "${MUI_INIFILE}" "Field ${DL_HOST}" "HWND"

  1387. SendMessage $3 ${CB_SELECTSTRING} 0 "STR:$4"

  1388. WriteINIStr "${MUI_INIFILE}" "Field ${DL_HOST}" State "$4"

  1389. !insertmacro ShowReg2Txt $1 $2 $3

  1390. ${if} $0 > 0

  1391. MessageBox MB_OK|MB_ICONINFORMATION|MB_TOPMOST "导入完成: 从备份文件中成功导入 $0 个主机项目。 "

  1392. ${else}

  1393. MessageBox MB_OK|MB_ICONINFORMATION|MB_TOPMOST "没有导入任何主机。 "

  1394. ${endif}

  1395. ${endif}

  1396. Pop $4

  1397. Pop $3

  1398. Pop $2

  1399. Pop $1

  1400. Exch $0

  1401. FunctionEnd ;;ImprotHostlist2REG

  1402. Section -Nop

  1403. Quit ;;形式,用不到...

  1404. SectionEnd
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-5-19 17:50 , Processed in 0.109101 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表