实例介绍
【实例简介】Innosetup互联网精简风格卸载
本Demo使用InnoSetup,结合botva2.dll和InnoCallback.dll实现Setup程序的界面美化
[code] | |
Const | |
//窗口移动 | |
WM_SYSCOMMAND = $0112; | |
GWL_STYLE = (-16); | |
ES_LEFT = 0; | |
ES_CENTER = 1; | |
ES_RIGHT = 2; | |
type | |
HDC=LongWord; | |
HFont=LongWord; | |
function SetWindowLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetWindowLongA@user32.dll stdcall'; | |
function GetWindowLong(Wnd: HWnd; NewLong: Longint): Longint; external 'GetWindowLongA@user32.dll stdcall'; | |
function CreateRoundRectRgn(p1, p2, p3, p4, p5, p6: Integer): THandle; external 'CreateRoundRectRgn@gdi32 stdcall'; | |
function SetWindowRgn(hWnd: HWND; hRgn: THandle; bRedraw: Boolean): Integer; external 'SetWindowRgn@user32 stdcall'; | |
function ReleaseCapture(): Longint; external 'ReleaseCapture@user32.dll stdcall'; | |
procedure Misc_SetFormRoundRectRgn(aForm: TForm; edgeSize: integer); | |
var | |
FormRegion:LongWord; | |
begin | |
FormRegion:=CreateRoundRectRgn(0,0,aForm.Width,aForm.Height,edgeSize-6,edgeSize-6); | |
SetWindowRgn(aForm.Handle,FormRegion,True); | |
end; | |
//窗口移动 | |
procedure _Misc_WizardFormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); | |
begin | |
ReleaseCapture; | |
SendMessage(WizardForm.Handle, WM_SYSCOMMAND, $F012, 0); | |
end; | |
procedure Misc_SetForm_Dragable(aForm: TForm); | |
var | |
MainLabel:TLabel; | |
begin | |
//5.5版的WizardForm,的确是取消了OnMouseDown事件, 但庆幸是的TLabel还支持这个事件,所以我们在初始化时,WizardForm顶部放一个透明的TLabel控件即可。 | |
MainLabel := TLabel.Create(aForm); | |
MainLabel.Parent := aForm; | |
MainLabel.AutoSize := False; | |
MainLabel.Left := 0; | |
MainLabel.Top := 0; | |
MainLabel.Width := aForm.Width; | |
MainLabel.Height := 50; | |
MainLabel.Caption := ''; | |
MainLabel.Transparent := True; | |
MainLabel.OnMouseDown := @_Misc_WizardFormMouseDown; | |
end; | |
procedure Misc_SetTEdit_TextCenter(edit: TEdit); | |
begin | |
SetWindowLong(edit.Handle, GWL_STYLE, GetWindowLong(edit.Handle, GWL_STYLE) or ES_CENTER); | |
end; | |
procedure Misc_SetTEdit_TextVCenter(edit:TEdit); | |
begin | |
end; | |
//procedure Misc_SetTEdit_TextVCenter(edit:TEdit); | |
//var | |
// DC: HDC; | |
// SaveFont: HFont; | |
// Sin: Integer; | |
// SysMetrics, Metrics: TTextMetric; | |
// Rct: TRect; | |
//begin | |
// DC := GetDC(0); | |
// GetTextMetrics(DC, SysMetrics); | |
// SaveFont := SelectObject(DC, Font.Handle); | |
// GetTextMetrics(DC, Metrics); | |
// SelectObject(DC, SaveFont); | |
// ReleaseDC(0, DC); | |
// with edit do begin | |
// if Ctl3D then Sin := 8 else Sin := 6; | |
// Rct := edit.ClientRect; | |
// Sin := Height - Metrics.tmHeight - Sin; | |
// Rct.Top := Sin div 2; | |
// SendMessage(Handle, EM_SETRECT, 0, Integer(@Rct)); | |
// end | |
//end; | |
function Misc_FomatByteText(const I: Longint):string; | |
var | |
X: Extended; | |
begin | |
if I > 1073741824 then | |
begin | |
X := (I*1.0 / 1073741824) * 100; { * 100 to include 2 decimals } | |
//if Frac(X) > 0 then | |
// X := Int(X) 1; { always round up } | |
X := X / 100; | |
Result := Format('%.2f GB', [X]); | |
Exit; | |
end; | |
if I > 1048576 then | |
begin | |
X := (I*1.0 / 1048576) * 10; { * 10 to include a decimal } | |
//if Frac(X) > 0 then | |
// X := Int(X) 1; { always round up } | |
X := X / 10; | |
Result := Format('%.1f MB', [X]); | |
Exit; | |
end; | |
if I > 1024 then | |
begin | |
X := I*1.0 / 1024; | |
//if Frac(X) > 0 then | |
// X := Int(X) 1; { always round up } | |
Result := Format('%.0f KB', [X]); | |
Exit; | |
end; | |
Result := Format('%d B', [I]); | |
end; | |
Footer
Footer navigation
【实例截图】
【核心代码】
.
├── Beautiful-InnoSetup-Demo-main
│ ├── DllsImport.iss
│ ├── HoverEvent.iss
│ ├── MakePCSetup.iss
│ ├── README.md
│ ├── SetupMisc.iss
│ ├── backup
│ │ ├── ChineseSimplified.isl
│ │ └── innosetup-qsp-5.5.9-unicode.exe
│ ├── pkgs
│ │ └── v1
│ │ ├── MonoBleedingEdge
│ │ │ ├── EmbedRuntime
│ │ │ │ ├── MonoPosixHelper.dll
│ │ │ │ └── mono-2.0-bdwgc.dll
│ │ │ └── etc
│ │ │ └── mono
│ │ │ ├── 2.0
│ │ │ │ ├── Browsers
│ │ │ │ │ └── Compat.browser
│ │ │ │ ├── DefaultWsdlHelpGenerator.aspx
│ │ │ │ ├── machine.config
│ │ │ │ ├── settings.map
│ │ │ │ └── web.config
│ │ │ ├── 4.0
│ │ │ │ ├── Browsers
│ │ │ │ │ └── Compat.browser
│ │ │ │ ├── DefaultWsdlHelpGenerator.aspx
│ │ │ │ ├── machine.config
│ │ │ │ ├── settings.map
│ │ │ │ └── web.config
│ │ │ ├── 4.5
│ │ │ │ ├── Browsers
│ │ │ │ │ └── Compat.browser
│ │ │ │ ├── DefaultWsdlHelpGenerator.aspx
│ │ │ │ ├── machine.config
│ │ │ │ ├── settings.map
│ │ │ │ └── web.config
│ │ │ ├── browscap.ini
│ │ │ ├── config
│ │ │ └── mconfig
│ │ │ └── config.xml
│ │ ├── UnityCrashHandler64.exe
│ │ ├── UnityPlayer.dll
│ │ ├── 我的应用.exe
│ │ └── 我的应用_Data
│ │ ├── Managed
│ │ │ ├── Assembly-CSharp.dll
│ │ │ ├── Mono.Security.dll
│ │ │ ├── System.ComponentModel.Composition.dll
│ │ │ ├── System.Configuration.dll
│ │ │ ├── System.Core.dll
│ │ │ ├── System.Data.dll
│ │ │ ├── System.Diagnostics.StackTrace.dll
│ │ │ ├── System.Drawing.dll
│ │ │ ├── System.EnterpriseServices.dll
│ │ │ ├── System.Globalization.Extensions.dll
│ │ │ ├── System.IO.Compression.FileSystem.dll
│ │ │ ├── System.IO.Compression.dll
│ │ │ ├── System.Net.Http.dll
│ │ │ ├── System.Numerics.dll
│ │ │ ├── System.Runtime.Serialization.Xml.dll
│ │ │ ├── System.Runtime.Serialization.dll
│ │ │ ├── System.ServiceModel.Internals.dll
│ │ │ ├── System.Transactions.dll
│ │ │ ├── System.Xml.Linq.dll
│ │ │ ├── System.Xml.XPath.XDocument.dll
│ │ │ ├── System.Xml.dll
│ │ │ ├── System.dll
│ │ │ ├── Unity.TextMeshPro.dll
│ │ │ ├── Unity.Timeline.dll
│ │ │ ├── UnityEngine.AIModule.dll
│ │ │ ├── UnityEngine.ARModule.dll
│ │ │ ├── UnityEngine.AccessibilityModule.dll
│ │ │ ├── UnityEngine.AndroidJNIModule.dll
│ │ │ ├── UnityEngine.AnimationModule.dll
│ │ │ ├── UnityEngine.AssetBundleModule.dll
│ │ │ ├── UnityEngine.AudioModule.dll
│ │ │ ├── UnityEngine.ClothModule.dll
│ │ │ ├── UnityEngine.ClusterInputModule.dll
│ │ │ ├── UnityEngine.ClusterRendererModule.dll
│ │ │ ├── UnityEngine.CoreModule.dll
│ │ │ ├── UnityEngine.CrashReportingModule.dll
│ │ │ ├── UnityEngine.DSPGraphModule.dll
│ │ │ ├── UnityEngine.DirectorModule.dll
│ │ │ ├── UnityEngine.GameCenterModule.dll
│ │ │ ├── UnityEngine.GridModule.dll
│ │ │ ├── UnityEngine.HotReloadModule.dll
│ │ │ ├── UnityEngine.IMGUIModule.dll
│ │ │ ├── UnityEngine.ImageConversionModule.dll
│ │ │ ├── UnityEngine.InputLegacyModule.dll
│ │ │ ├── UnityEngine.InputModule.dll
│ │ │ ├── UnityEngine.JSONSerializeModule.dll
│ │ │ ├── UnityEngine.LocalizationModule.dll
│ │ │ ├── UnityEngine.ParticleSystemModule.dll
│ │ │ ├── UnityEngine.PerformanceReportingModule.dll
│ │ │ ├── UnityEngine.Physics2DModule.dll
│ │ │ ├── UnityEngine.PhysicsModule.dll
│ │ │ ├── UnityEngine.ProfilerModule.dll
│ │ │ ├── UnityEngine.ScreenCaptureModule.dll
│ │ │ ├── UnityEngine.SharedInternalsModule.dll
│ │ │ ├── UnityEngine.SpriteMaskModule.dll
│ │ │ ├── UnityEngine.SpriteShapeModule.dll
│ │ │ ├── UnityEngine.StreamingModule.dll
│ │ │ ├── UnityEngine.SubstanceModule.dll
│ │ │ ├── UnityEngine.SubsystemsModule.dll
│ │ │ ├── UnityEngine.TLSModule.dll
│ │ │ ├── UnityEngine.TerrainModule.dll
│ │ │ ├── UnityEngine.TerrainPhysicsModule.dll
│ │ │ ├── UnityEngine.TextCoreModule.dll
│ │ │ ├── UnityEngine.TextRenderingModule.dll
│ │ │ ├── UnityEngine.TilemapModule.dll
│ │ │ ├── UnityEngine.UI.dll
│ │ │ ├── UnityEngine.UIElementsModule.dll
│ │ │ ├── UnityEngine.UIElementsNativeModule.dll
│ │ │ ├── UnityEngine.UIModule.dll
│ │ │ ├── UnityEngine.UNETModule.dll
│ │ │ ├── UnityEngine.UmbraModule.dll
│ │ │ ├── UnityEngine.UnityAnalyticsModule.dll
│ │ │ ├── UnityEngine.UnityConnectModule.dll
│ │ │ ├── UnityEngine.UnityTestProtocolModule.dll
│ │ │ ├── UnityEngine.UnityWebRequestAssetBundleModule.dll
│ │ │ ├── UnityEngine.UnityWebRequestAudioModule.dll
│ │ │ ├── UnityEngine.UnityWebRequestModule.dll
│ │ │ ├── UnityEngine.UnityWebRequestTextureModule.dll
│ │ │ ├── UnityEngine.UnityWebRequestWWWModule.dll
│ │ │ ├── UnityEngine.VFXModule.dll
│ │ │ ├── UnityEngine.VRModule.dll
│ │ │ ├── UnityEngine.VehiclesModule.dll
│ │ │ ├── UnityEngine.VideoModule.dll
│ │ │ ├── UnityEngine.VirtualTexturingModule.dll
│ │ │ ├── UnityEngine.WindModule.dll
│ │ │ ├── UnityEngine.XRModule.dll
│ │ │ ├── UnityEngine.dll
│ │ │ ├── mscorlib.dll
│ │ │ └── netstandard.dll
│ │ ├── Resources
│ │ │ ├── unity default resources
│ │ │ └── unity_builtin_extra
│ │ ├── app.info
│ │ ├── boot.config
│ │ ├── globalgamemanagers
│ │ ├── globalgamemanagers.assets
│ │ ├── level0
│ │ ├── sharedassets0.assets
│ │ └── sharedassets0.assets.resS
│ └── res
│ ├── License.txt
│ ├── SetupIcon.ico
│ └── tmp
│ ├── InnoCallback.dll
│ ├── bg.png
│ ├── bg2.png
│ ├── botva2.dll
│ ├── btclose.png
│ ├── btmin.png
│ ├── btn.png
│ ├── btnOneKeyInstall.png
│ ├── check.png
│ ├── pic1.png
│ ├── pic2.png
│ ├── pic3.png
│ ├── pic4.png
│ ├── pic5.png
│ ├── progress.png
│ ├── progressBg.png
│ └── setup_icon.png
└── 好例子网_Beautiful-InnoSetup-Demo-main.zip
20 directories, 148 files
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论