在 Inno Setup 中实现倒数N秒后激活按钮

原文 http://restools.hanzify.org/article.asp?id=67

timectrl.dll 为一个 6.5 KB 的按钮激活时间控制插件。

 引用来自 Example1.iss,2009-1-19 12:35:12
; -- Example1.iss --
; 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 

posted on 2013-08-02 23:27 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/3234015.html

在 Inno Setup 中实现倒数N秒后激活按钮相关推荐

  1. django中实现页面倒数几秒后自动跳转

    实现倒计时跳转要和html中的js结合起来, 例如:实现一个页面简单的注册,然后注册成功后倒计时自动跳转到登录页面. # 注册页面 def register(request):return rende ...

  2. jquery实现按钮倒数7秒后才可以点击

    方法一: <input type="button" value="下一步" id="button" disabled> < ...

  3. 例子:10秒后同意按钮可点击

    <body><div><span id="daojishi">10</span><input disabled="d ...

  4. Inno Setup 是什么?

    1.Inno Setup 是什么? Inno Setup 是一个免费的 Windows 安装程序制作软件.第一次发表是在 1997 年,Inno Setup 今天在功能设置和稳定性上的竞争力可能已经超 ...

  5. inno setup相关 (二)

    本周在改一个inno setup卸载时不关闭运行程序的问题,在这个过程中发现官方文档的重要性: 官方文档地址:http://www.jrsoftware.org/isinfo.php 一.inno s ...

  6. [转载]INNO Setup 使用笔记

    http://www.cnblogs.com/pyw0818/archive/2011/01/22/1941806.html (自定义卸载) http://www.cnblogs.com/pyw081 ...

  7. 使用exe4j+inno setup打包exe文件踩坑记录

    一.前言 最近用Java给朋友写了一个截图工具和将所有图片生成pdf工具,但是由于朋友不是计算机行业的人员,如果为了使用java常见的运行方式运行工具,则还需要在电脑上安装jdk与jre,着实不方便. ...

  8. Inno Setup 系列之添加管理员权限

    需求 Inno Setup打包的程序安装完成后运行失败,这个是因为权限不够,打包的应用需要管理员权限 解决 1.在[Setup]节点添加 PrivilegesRequired=admin 2.在Inn ...

  9. Inno Setup入门 (软件打包工具)学习笔记 (26课全)

    [] : 里面的就是 段 每个段里面的是属性 AppId : 软件的APPID尽量是唯一的,随机生成,尽量不跟其他软件的ID冲突,这个ID安装之后是要写进系统的注册表的,系统在管理和卸载你的软件的时候 ...

最新文章

  1. 高频面试题:秒杀场景设计
  2. js/jq基础(日常整理记录)-2-一个简单的js方法实现集合的非引用拷贝
  3. Java多线程(三)之ConcurrentHashMap深入分析
  4. 使用的 SQL Server 版本不支持数据类型“datetime2”的错误解决方法
  5. 小猪佩奇python_python画个小猪佩奇
  6. window系统对应默认IE浏览器版本
  7. 三菱Q系列plc串口通讯四台台达变频器通讯程序
  8. nms网关服务器日常维护,ZXB10-NMS网管解决方案
  9. python 实现随机加减法
  10. 好的编码习惯是一场代码驱邪仪式
  11. Java学习笔记Day2:流程控制
  12. USB xHCI控制器使用总结
  13. 浏览器自动转到外国服务器,通过HSTS实现浏览器自动跳转https(非服务器响应跳转)...
  14. 免杀的N种姿势-msf篇
  15. Linux查看CPU核数
  16. 分享88个搜索链接PHP源码,总有一款适合你
  17. 浅谈2017棋牌游戏的前景 运营 推广(中) 转贴
  18. 小孩学python有意义吗-小孩Python编程培训有用吗
  19. 小程序处理大量数据列表的方法
  20. HFSS 带状线仿真(HFSS和3D LAYOUT的比较)

热门文章

  1. c#_continue 和 break 的区别
  2. 预录取到计算机,预录取什么情况不录取 原因有哪些
  3. oracle存储过程建分区表,oracle存储过程创建表分区实例
  4. java jetty eclipse_用Eclipse+Maven+Jetty构建Java Web开发环境(详细笔记)
  5. python调用百度地图画轨迹图_[python]百度地图API,正/逆地理编码,路线规划接口的调用,实现输出出行的距离和......
  6. vivo计算机的隐藏功能介绍,vivo手机有哪些隐藏功能?这6个功能实在太好用了,要悄悄用起来...
  7. 计算机仿真实验用的教学软件是,AR增强现实教学软件,学习效果倍增
  8. asp怎么循环增加字段和字段对应的值_ASP.NET Core教程「三」实体字段属性
  9. jdk自带压测工具_FULL GC分析过程分享
  10. 通信专业考研考C语言,2016年北京邮电大学信息与通信工程学院C语言程序设计考研复试题库...