期翼嘻嘻即时通讯综合平台

 找回密码
 立即注册
查看: 6708|回复: 2
打印 上一主题 下一主题

转 在 Inno Setup 中实现倒数N秒后激活按钮,安装程序在倒数 [复制链接]

Rank: 3Rank: 3

跳转到指定楼层
楼主
发表于 2012-7-2 19:07:47 |只看该作者 |倒序浏览
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


不保时效,有兴趣的自己下



嘻嘻脚本在[Files]
Source: "timectrl.dll"; Flags: dontcopy加入这一句,当然这个dll在上面的文件中,放到打包的文件中去吧,放哪你看着办

加完后再加入上面的那段代码,然后就生成了

使用道具 举报

Rank: 4

沙发
发表于 2012-7-2 19:33:52 |只看该作者
晕 有点复杂化了

使用道具 举报

Rank: 6Rank: 6

板凳
发表于 2012-7-4 10:31:16 |只看该作者
我觉的这个没必要哦!我下载软件后 就是想马上安装 而不是还等待,
打开自己空间听听音乐,蛮不错的

使用道具 举报

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

蓝牙耳机无线高音质适用于苹果华强北pro2023年新款华为小米通用 【推荐理由】赠运费险 【券后价】89.00

Archiver|手机版|期翼嘻嘻论坛企业即时通讯综合平台 ( 京 ICP 备 10015350 )

GMT+8, 2024-11-23 09:29 , Processed in 0.123918 second(s), 9 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部