在 Inno Setup 中实现倒数N秒后激活按钮
原文 http://restools.hanzify.org/article.asp?id=67
timectrl.dll 为一个 6.5 KB 的按钮激活时间控制插件。
; restools
; http://restools.yeah.net
; 此插件同样可以使用在NSIS的安装程序中。
; 这只不过是演示一下没有什么是实现不了的,只是值不值得的问题,为了这么一个小功能而去编一个相对麻烦的插件,我觉得太过浪费时间了。
; 其实只要在 Windows 中,就可以外挂任何的东西,只不过看看究竟你的重心是在做安装程序,还是在做外挂。如果做一个外挂的插件比做这个安装程序还复杂,倒不如我自己编写安装程序的自由度还来得大。
; 时间仓促,所以编程可能会有点谬误,如有错误可以提出
[Setup]
AppName=我的程序
AppVerName=我的程序 版本 1.5
DefaultDirName={pf}\我的程序
DefaultGroupName=我的程序
UninstallDisplayIcon={app}\MyProg.exe
LicenseFile=license.txt
[Files]
Source: "MyProg.exe"; DestDir: "{app}"
Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme
Source: "timectrl.dll"; Flags: dontcopy
[Icons]
Name: "{group}\我的程序"; Filename: "{app}\MyProg.exe"
[code]
function starttimer(WizardFormHandle: HWND; ButtonHandle: HWND; ButtonCaption: PChar; RTime: UINT): BOOL; external 'starttimer@files:timectrl.dll stdcall';
//WizardFormHandle 向导窗口句柄
//ButtonHandle 下一步按钮句柄
//ButtonCaption 秒数倒数完毕后要在按钮上显示的文字
//RTime 剩余时间
function stoptimer(): BOOL; external 'stoptimer@files:timectrl.dll stdcall';
function IsWindowEnabled(hWnd: HWND): BOOL; external 'IsWindowEnabled@user32.dll stdcall';
procedure InitializeWizard();
begin
WizardForm.LICENSEACCEPTEDRADIO.Hide;
WizardForm.LICENSENOTACCEPTEDRADIO.Hide;
WizardForm.LICENSEACCEPTEDRADIO.Checked := True;
WizardForm.LICENSEMEMO.Height := 170;
with TLabel.Create(WizardForm) do
begin
Parent := WizardForm.LicensePage;
Top := 200;
Left := 2;
Caption := '如果你点击“我同意”进入下一页面,即表示你同意以上协议。';
end;
end;
procedure DeinitializeSetup();
begin
stoptimer();
end;
procedure CurPageChanged(CurPageID: Integer);
begin
//一定要别人先看协议20秒,即使返回欢迎页面,秒数倒数会停止,再进入协议秒数倒数继续
if CurPageID = wpLicense then
starttimer(WizardForm.Handle,WizardForm.NEXTBUTTON.Handle,'我同意(&I)',20)
else
if (CurPageID = wpWelcome) or (CurPageID = wpSelectDir) then
begin
stoptimer();
WizardForm.NEXTBUTTON.Caption := '下一步(&N) >';
end;
end;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
if (CurPageID = wpLicense) then
Result := IsWindowEnabled(WizardForm.NextButton.Handle)
else
Result := True;
end;
点击这里下载脚本例子:
http://restools.hanzify.org/inno/timectrl/inno_timectrl.zip
最新文章
- ImageSharp .NET Core跨平台图形处理库
- jquery简单的轮播效果!
- 将iOS中Safari 的默认搜索引擎由google.cn改为google.com的方法
- iOS开发——数据持久化&;本地数据的存储(使用NSCoder将对象保存到.plist文件)
- Random类(java.util)
- ASP.NET MVC 第七回 UrlHelper
- Spring源码地址和相关介绍的网址
- Linux内核空间-用户空间通信之debugfs
- Windows下实战Apache+PHP [转]
- RF接口测试本地环境部署
- SSH协议(转载)
- UE4 C++与蓝图交互
- 淘宝npm镜像使用方法(转)
- 第十一节,利用yolov3训练自己的数据集
- python 什么是位置参数?
- react面试问题总结
- hadoop备战:yarn框架的搭建(mapreduce2)
- mvc 权限验证
- SpagoBI 教程 Lesson 2: OLAP with JPIVOT
- Unity3D游戏开发最佳实践20技巧(三)
热门文章
- Ext4 MVC CRUD操作
- Asp.net管道 (第二篇)
- j2ee概览
- 八大排序c++可运行精简版,一目了然
- bzoj1645 [Usaco2007 Open]City Horizon 城市地平线
- 大量客户反映wordpress的网站打开巨慢,经分析发现,这些网站大都使用了google的字体服务,由于最近google的服务已经被大陆屏蔽,所以wordpress的网站打开时,会卡在字体加载上。
- 数据挖掘经典算法之KNN
- OpenGL进阶(十一) - GLSL4.x中的数据传递
- 分享几种Linux软件的安装方法
- js获取浏览器的keydown事件(附keycode码)