Inno Setup 插件 CallbackCtrl V1.1 (回调函数插件)

用 VC 重现 InnoCallback 的功能。

Version 1.1
修正在某些 Windows 平台(例如: Windows XP SP3)出现不能正常运行的问题。


引用来自  test1.iss 引用来自 test1.iss
; -- test.iss --
; restools
; http://restools.hanzify.org
; 时间仓促,如有错误请到我的 BLOG 咨询
; CallbackCtrl.dll 为一个用于 Inno Setup 的 4 KB 的回调( Callback )函数插件。
; 跟 InnoCallback 插件功能完全一样,但是由于它是用 VC 重现功能,所以仅仅只有 4 KB 就足以完成回调函数的处理。
; 同样的功能,将会在后续的 Inno Setup 增强版中直接提供回调函数的支持,
; 也就是说无须任何插件就可以在脚本中处理回调函数。
; 这个插件只是提供给那些使用普通版本 Inno Setup 的用户使用。

; Inno Setup plugin - CallbackCtrl ( 4 KB )
; Copyright (C) restools 2009
; Version 1.1

[Setup]
AppName=My Application
AppVerName=My Application Ver 1.5
DefaultDirName={pf}\My Application
SolidCompression=yes
Compression=lzma/ultra  

[Files]
Source: CallbackCtrl.dll; DestDir: {tmp}; Flags: dontcopy

[code]
type
TTimerProc=procedure(h:longword; msg:longword; idevent:longword; dwTime:longword);

function WrapTimerProc(callback:TTimerProc; paramcount:integer):longword;
  external 'wrapcallbackaddr@files:callbackctrl.dll stdcall';

function SetTimer(hWnd: longword; nIDEvent, uElapse: longword; lpTimerFunc: longword): longword;
  external 'SetTimer@user32.dll stdcall';

procedure mytimerproc(h:longword; msg:longword; idevent:longword; dwTime:longword);
begin
  
WizardForm.WelcomePage.Color:=random($FFFFFF);
end;

procedure InitializeWizard();
var
  
timercallback: Longword;
begin
  
timercallback := WrapTimerProc(@mytimerproc,4);
  settimer(0,0,1000,timercallback);
end;



点击下面连接下载例子。
http://restools.hanzify.org/inno/callbackctrl/InnoCallbackCtrl_V1.1.zip


评论: 2 | 引用: 0 | 查看次数: 12183
  • 1
xin [2009-09-19 02:36 PM]
你的建议不错,采纳。
OK [2009-09-18 03:22 PM]
对作者的佩服,不是一般的长啊..................................................................................
一点小建议,既然作者也区分针对不同的版本,标准版或增强版,建议增加一个ISSP的内置变量来区分是标准版或者是你的增强版
:
#ifdef extinno
...
#else
...
#endif ;extinno
这样代码适应性很强,无论标版或增强版均能正常通过编译.
  • 1
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码: 验证码
内 容:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 5000 字 | UBB代码 开启 | [img]标签 关闭