论坛风格切换切换到宽版
  • 7261阅读
  • 2回复

【已解决】阿信增强版InnoSetup中Timer的用法 [复制链接]

上一主题 下一主题
离线lovelost
 

发帖
140
金钱
1060
威望
106
只看楼主 倒序阅读 0 发表于: 2011-02-17
小第想在innoSetup中设置一个定时器事件,不知道如何使用Timer事件,哪位大侠可以给一些提示?
好像不能使用形如 procedure TForm1.Timer1Timer(Sender: TObject);的过程
谢谢!
离线xwhminghan

发帖
263
金钱
1440
威望
144
只看该作者 1 发表于: 2011-02-17
请使用插件timectrl.dll。例子如下:
; -- Example1.iss --; restools; http://restools.yeah.net; 此插件同样可以使用在 NSIS 的安装程序中。; 这只不过是演示一下没有什么是实现不了的,只是值不值得的问题,为了这么一个小功能而去编一个相对麻烦的插件,我觉得太过浪费时间了。; 其实只要在 Windows 中,就可以外挂任何的东西,只不过看看究竟你的重心是在做安装程序,还是在做外挂。如果做一个外挂的插件比做这个安装程序还复杂,倒不如我自己编写安装程序的自由度还来得大。; 时间仓促,所以编程可能会有点谬误,如有错误可以提出[Setup]AppName=我的程序AppVerName=我的程序 版本 1.5DefaultDirName={pf}\我的程序DefaultGroupName=我的程序UninstallDisplayIcon={app}\MyProg.exeLicenseFile=compiler:license.txt[Files]Source: compiler:Examples\MyProg.exe; DestDir: {app}Source: compiler:Examples\Readme.txt; DestDir: {app}; Flags: isreadmeSource: 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';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;
呵呵,很囧,我本人没有学过计算机语言之类的课程,而我学习打包软件,完全处于自己的兴趣而已,Inno Setup 也只是学习了几个月,NSIS 也只是接触一点点,对于Pascal语言,没有一个系统的了解,因此还很陌生,还望大虾们以后多多赐教,表笑我啊~~
离线lovelost

发帖
140
金钱
1060
威望
106
只看该作者 2 发表于: 2011-02-17
呵呵,我就是想用本身的TTimer,我找到了,Timer1.OnTimer可以指定,谢谢!