📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, hxUpdate, hxFileRes, ComCtrls, Grids, ValEdit,
ExtCtrls;
type
TInit = function(ProjectName: PChar; Host: PChar; Port: Integer;
ASocksInfo: PSocksInfo = nil): Boolean; stdcall;
TCheckVersion = function: Boolean; stdcall;
TUpdateProduct = function(DownloadProgress: TDownloadProgress): Boolean; stdcall;
TGetVersions = function(VerInfo: PVerInfo; Index: Integer): Integer; stdcall;
TMainForm = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
pbDownload: TProgressBar;
lblDownload: TLabel;
chkProxy: TCheckBox;
Label1: TLabel;
edtProxyIP: TEdit;
edtProxyPort: TEdit;
Label2: TLabel;
edtUsername: TEdit;
Label3: TLabel;
edtPassword: TEdit;
Label4: TLabel;
Button5: TButton;
vlVersions: TValueListEditor;
Notebook1: TNotebook;
Edit1: TEdit;
Button6: TButton;
Label5: TLabel;
Label6: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
LibHandle: THandle;
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
procedure DoDownloadProgress(DownloadStatus: TDownloadStatus; FileName: string;
WorkCount: Integer);
begin
with MainForm do
begin
case DownloadStatus of
dsBegin:
begin
pbDownload.Min:= 0;
pbDownload.Max:= WorkCount;
pbDownload.Step:= 1;
pbDownload.Position:= 0;
end;
dsFileBegin:
lblDownload.Caption:= Format('正在下载%s....', [FileName]);
dsFileData:
begin
pbDownload.StepBy(WorkCount);
end;
dsFileEnd:
begin
lblDownload.Caption:= '下载完毕!';
//ShowMessage('Download ok.');
end;
dsEnd:
begin
//所有文件下载完毕
lblDownload.Caption:= '所有文件已经下载完毕.';
Notebook1.PageIndex:= 1;
end;
end;
end;
end;
procedure TMainForm.Button1Click(Sender: TObject);
var
CheckVersion: TCheckVersion;
begin
@CheckVersion:= GetProcAddress(LibHandle, 'CheckNewVersion');
if (@CheckVersion <> nil) then
begin
if CheckVersion then
ShowMessage('找到新版本了!')
else
ShowMessage('当前版本已经是最新的了!');
end
else
RaiseLastWin32Error;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
LibHandle:= LoadLibrary('..\LiveUpdate.dll');
if LibHandle = 0 then
raise Exception.CreateFmt('无法加载动态链接库LiveUpdate.dll,错误码是%d', [GetLastError]);
end;
procedure TMainForm.FormDestroy(Sender: TObject);
begin
if LibHandle <> 0 then
FreeLibrary(LibHandle);
end;
procedure TMainForm.Button2Click(Sender: TObject);
var
UpdateProduct: TUpdateProduct;
begin
@UpdateProduct:= GetProcAddress(LibHandle, 'UpdateProduct');
if @UpdateProduct <> nil then
if not UpdateProduct(DoDownloadProgress) then
Exit;
end;
procedure TMainForm.Button3Click(Sender: TObject);
var
SocksInfo: PSocksInfo;
Init: TInit;
Ret: Boolean;
begin
@Init:= GetProcAddress(LibHandle, 'Init');
if @Init = nil then
raise Exception.Create('无法找到Dll函数!');
if not chkProxy.Checked then
Ret:= Init('音乐天堂', '10.1.1.139', 9901)
else
begin
New(SocksInfo);
with SocksInfo^ do
begin
ProxyIP:= '10.1.1.254';
ProxyPort:= 1080;
ProxyUser:= '';
ProxyPass:= '';
end;
edtProxyIP.Text:= SocksInfo^.ProxyIP;
edtUsername.Text:= SocksInfo^.ProxyUser;
edtProxyPort.Text:= IntToStr(SocksInfo^.ProxyPort);
edtPassword.Text:= SocksInfo^.ProxyPass;
Ret:= Init('音乐天堂', '61.141.158.133', 9901, SocksInfo);
Dispose(SocksInfo);
end;
if Ret then
ShowMessage('初始化成功.')
else
ShowMessage('初始化失败!');
end;
procedure TMainForm.Button4Click(Sender: TObject);
var
I, Count: Integer;
pInfo: PVerInfo;
GetOldVersions: TGetVersions;
begin
@GetOldVersions:= GetProcAddress(LibHandle, 'GetOldVersions');
if @GetOldVersions <> nil then
begin
Count:= GetOldVersions(nil, 0);
New(pInfo);
with pInfo^ do
begin
FileName:= AllocMem(256);
Version:= AllocMem(256);
end;
for I:= 0 to Count - 1 do
begin
GetOldVersions(pInfo, I);
vlVersions.Values[pInfo^.FileName]:= pInfo^.Version;
end;
with pInfo^ do
begin
FreeMem(FileName, 256);
FreeMem(Version, 256);
end;
Dispose(pInfo);
end;
end;
procedure TMainForm.Button5Click(Sender: TObject);
var
I, Count: Integer;
pInfo: PVerInfo;
GetNewVersions: TGetVersions;
begin
@GetNewVersions:= GetProcAddress(LibHandle, 'GetNewVersions');
if @GetNewVersions <> nil then
begin
Count:= GetNewVersions(nil, 0);
New(pInfo);
New(pInfo);
with pInfo^ do
begin
FileName:= AllocMem(256);
Version:= AllocMem(256);
end;
for I:= 0 to Count - 1 do
begin
GetNewVersions(pInfo, I);
vlVersions.Values[pInfo^.FileName]:= pInfo^.Version;
end;
with pInfo^ do
begin
FreeMem(FileName, 256);
FreeMem(Version, 256);
end;
Dispose(pInfo);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -