例子:自动替换背景图片

优质
小牛编辑
161浏览
2023-12-01

引用脚本的内容:

; NSIS 中自动替换背景图片的例子
; 需要新版的 nsWindows 插件与头文件
; 脚本编写:
; X-Star @ 
; zhfi @ 

!addincludedir .\include
!addplugindir  .\plugins

;替换图片的时间间隔(ms)
!define TimeForChange 3000
;图片数量范围
!define MinBgImage 1  ;下限
!define MaxBgImage 2  ;上限
;图片名称变量
var iBgImage

; 安装程序初始定义常量
!define PRODUCT_NAME "My application"
!define PRODUCT_VERSION "1.0"

SetCompressor /SOLID lzma

!include "MUI.nsh"
!include "nsWindows.nsh"

; MUI 预定义常量
;添加页面初始化函数
!define MUI_CUSTOMFUNCTION_GUIINIT MyGUIInit 

; 欢迎页面 
!insertmacro MUI_PAGE_WELCOME 
; 安装目录选择页面 
!insertmacro MUI_PAGE_DIRECTORY 
; 安装过程页面 
!insertmacro MUI_PAGE_INSTFILES 
; 安装完成页面 
!insertmacro MUI_PAGE_FINISH 
; 安装界面包含的语言设置
!insertmacro MUI_LANGUAGE "SimpChinese" 
; 安装预释放文件
  !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; ------ MUI 现代界面定义结束 ------

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" 
OutFile "Setup.exe" 
InstallDir "$EXEDIR"
ShowInstDetails show 
ShowUnInstDetails show 

Section -
SectionEnd

Function .onInit
  InitPluginsDir
;一次性释放所有的图片到临时目录中
	StrCpy $iBgImage ${MinBgImage}
    File "/oname=$PLUGINSDIR\$iBgImage.bmp" "images\1.bmp"
  Intop $iBgImage $iBgImage + 1
    File "/oname=$PLUGINSDIR\$iBgImage.bmp" "images\2.bmp"
FunctionEnd

Function MyGUIInit
;建立Timer
  ${NSW_Init} ;如果没有使用${NSW_CreateWindow}或者${NSW_CreateWindowEx},就必须用此宏初始化插件
	${NSW_CreateTimer} OnTimer ${TimeForChange}

;设置初始背景
  BgImage::SetBg /FILLSCREEN '$PLUGINSDIR\${MaxBgImage}.bmp'
;  BgImage::AddImage '$PLUGINSDIR\${MaxBgImage}.bmp'
  BgImage::Redraw
FunctionEnd

Function .onGUIEnd 
  BgImage::Destroy
FunctionEnd 

Function OnTimer
  ${If} $iBgImage = ${MaxBgImage}
    StrCpy $iBgImage ${MinBgImage}
  ${Else}
    Intop $iBgImage $iBgImage + 1
  ${EndIf}

  BgImage::Clear
  BgImage::SetBg /FILLSCREEN '$PLUGINSDIR\$iBgImage.bmp'
;  BgImage::AddImage '$PLUGINSDIR\$iBgImage.bmp'
  BgImage::Redraw
FunctionEnd

注:准备两张壁纸分别命名为1.bmp和2.bmp放在images子文件夹中即可编译。