ISSkin Pack 3.0 (含预览程序 ISSkinViewer)

包含 250 款皮肤, 预览程序纯粹的由 Inno Setup 脚本写成. 足以展示 Inno Setup 脚本引擎的强大.

下载地址:
http://restools.hanzify.org/inno/ISSkinPack/ISSkinPack.exe

预览程序:


引用来自  ISSkinViewer.iss 引用来自 ISSkinViewer.iss
#ifndef IS_ENHANCED
  #error Enhanced edition of Inno Setup (restools) is required to compile this script
#endif

[Setup]
AppName=ISSkinViewer
AppVersion=1.0
SetupIconFile=IViewer.ico
DefaultDirName={pf}\ISSkinViewer
OutputBaseFilename=ISSkinViewer
OutputDir=.

[Files]
Source: ISSkin.dll; DestDir: {app}; Flags: dontcopy

[Code]
procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskin.dll stdcall';
procedure UnloadSkin(); external 'UnloadSkin@files:isskin.dll stdcall';
function ShowWindow(hWnd: Integer; uType: Integer): Integer; external 'ShowWindow@user32.dll stdcall';
function LoadLibrary(lpLibFileName: String): THandle; external 'LoadLibraryA@kernel32.dll stdcall';
function FreeLibrary(hLibModule: THandle): Boolean; external 'FreeLibrary@kernel32.dll stdcall';
function EnumResourceNames(hModule: THandle; lpType: String; lpEnumFunc: Longword; lParam: Longint): BOOL; external 'EnumResourceNamesA@kernel32.dll stdcall';
function SetWindowText(hWnd: Longint; lpString: PChar): Longint; external 'SetWindowTextA@user32.dll';
function GetWindowLong(hWnd, nIndex: Integer): Longint; external 'GetWindowLongA@user32.dll';

procedure DeinitializeSetup();
begin
  ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
  UnloadSkin();
end;

var
  
SkinFilePath: String;

procedure BrowserBtn_OnClick(Sender: TObject); forward;

procedure ISSkinFileCombo_OnChange(Sender: TObject); forward;

procedure ISSkinIniCombo_OnChange(Sender: TObject); forward;

procedure BlogBtn_OnClick(Sender: TObject);
var
  
Res: Integer;
begin
  
ShellExec('open', 'http://restools.hanzify.org','','', SW_SHOW, ewNoWait, Res);
end;

{ RedesignWizardFormBegin } // 不要删除这一行代码。
// 不要修改这一段代码,它是自动生成的。
var
  
Panel1: TPanel;
  Label1: TLabel;
  Label2: TLabel;
  Bevel2: TBevel;
  Label3: TLabel;
  BitmapImage1: TBitmapImage;
  Label4: TLabel;
  ISSkinFileCombo: TNewComboBox;
  ISSkinIniCombo: TNewComboBox;
  NewEdit1: TNewEdit;
  NewMemo1: TNewMemo;
  NewCheckBox1: TNewCheckBox;
  NewRadioButton1: TNewRadioButton;
  NewListBox1: TNewListBox;
  Panel2: TPanel;
  PasswordEdit1: TPasswordEdit;
  NewCheckListBox1: TNewCheckListBox;
  NewStaticText1: TNewStaticText;
  FolderTreeView1: TFolderTreeView;
  RichEditViewer1: TRichEditViewer;
  NewProgressBar1: TNewProgressBar;
  NewComboBox1: TNewComboBox;
  StartMenuFolderTreeView1: TStartMenuFolderTreeView;
  BrowserBtn: TNewButton;
  BlogBtn: TNewButton;

procedure RedesignWizardForm;
begin
  with
WizardForm do
  begin
    
Caption := 'ISSKIN 皮肤预览程序 Ver1.0';
    ShowHint := True;
  end;

  { Panel1 }
  
Panel1 := TPanel.Create(WizardForm);
  with Panel1 do
  begin
    
Name := 'Panel1';
    Parent := WizardForm.WelcomePage;
    Left := ScaleX(0);
    Top := ScaleY(0);
    Width := ScaleX(497);
    Height := ScaleY(313);
    BevelOuter := bvNone;
    Caption := ' ';
    ParentBackground := False;
  end;

  { Label1 }
  
Label1 := TLabel.Create(WizardForm);
  with Label1 do
  begin
    
Name := 'Label1';
    Parent := Panel1;
    Caption := '皮肤文件:';
    Transparent := False;
    Left := ScaleX(16);
    Top := ScaleY(8);
    Width := ScaleX(51);
    Height := ScaleY(13);
  end;

  { Label2 }
  
Label2 := TLabel.Create(WizardForm);
  with Label2 do
  begin
    
Name := 'Label2';
    Parent := Panel1;
    Caption := '皮肤 INI 参数:';
    Transparent := False;
    Left := ScaleX(288);
    Top := ScaleY(8);
    Width := ScaleX(71);
    Height := ScaleY(13);
  end;

  { Bevel2 }
  
Bevel2 := TBevel.Create(WizardForm);
  with Bevel2 do
  begin
    
Name := 'Bevel2';
    Parent := Panel1;
    Left := ScaleX(7);
    Top := ScaleY(72);
    Width := ScaleX(482);
    Height := ScaleY(229);
  end;

  { Label3 }
  
Label3 := TLabel.Create(WizardForm);
  with Label3 do
  begin
    
Name := 'Label3';
    Parent := Panel1;
    Caption := 'Inno Setup 支持的控件:';
    Transparent := False;
    Left := ScaleX(16);
    Top := ScaleY(53);
    Width := ScaleX(118);
    Height := ScaleY(13);
  end;

  { BitmapImage1 }
  
BitmapImage1 := TBitmapImage.Create(WizardForm);
  with BitmapImage1 do
  begin
    
Name := 'BitmapImage1';
    Parent := Panel1;
    Left := ScaleX(288);
    Top := ScaleY(80);
    Width := ScaleX(185);
    Height := ScaleY(29);
  end;

  { Label4 }
  
Label4 := TLabel.Create(WizardForm);
  with Label4 do
  begin
    
Name := 'Label4';
    Parent := Panel1;
    Hint := 'TLabel';
    Caption := 'Label4';
    Transparent := False;
    Left := ScaleX(144);
    Top := ScaleY(80);
    Width := ScaleX(32);
    Height := ScaleY(13);
  end;

  { ISSkinFileCombo }
  
ISSkinFileCombo := TNewComboBox.Create(WizardForm);
  with ISSkinFileCombo do
  begin
    
Name := 'ISSkinFileCombo';
    Parent := Panel1;
    Left := ScaleX(16);
    Top := ScaleY(24);
    Width := ScaleX(229);
    Height := ScaleY(21);
    Style := csDropDownList;
    DropDownCount := 16;
  end;

  { ISSkinIniCombo }
  
ISSkinIniCombo := TNewComboBox.Create(WizardForm);
  with ISSkinIniCombo do
  begin
    
Name := 'ISSkinIniCombo';
    Parent := Panel1;
    Left := ScaleX(288);
    Top := ScaleY(24);
    Width := ScaleX(193);
    Height := ScaleY(21);
    Style := csDropDownList;
  end;

  { NewEdit1 }
  
NewEdit1 := TNewEdit.Create(WizardForm);
  with NewEdit1 do
  begin
    
Name := 'NewEdit1';
    Parent := Panel1;
    Left := ScaleX(16);
    Top := ScaleY(104);
    Width := ScaleX(105);
    Height := ScaleY(21);
    Hint := 'TNewEdit';
    Text := 'NewEdit1';
  end;

  { NewMemo1 }
  
NewMemo1 := TNewMemo.Create(WizardForm);
  with NewMemo1 do
  begin
    
Name := 'NewMemo1';
    Parent := Panel1;
    Left := ScaleX(16);
    Top := ScaleY(128);
    Width := ScaleX(105);
    Height := ScaleY(89);
    Hint := 'TNewMemo';
    Lines.Text := 'NewMemo1' + #13#10 +
         'Line 2' + #13#10 +
         'Line 3' + #13#10 +
         'Line 4' + #13#10 +
         'Line 5' + #13#10 +
         'Line 6' + #13#10 +
         'Line 7' + #13#10 +
         'Line 8' + #13#10 +
         'Line 9' + #13#10 +
         'Line 10' + #13#10 +
         'Line 11' + #13#10 +
         'Line 12' + #13#10 +
         'Line 13' + #13#10 +
         '';
    ScrollBars := ssBoth;
  end;

  { NewCheckBox1 }
  
NewCheckBox1 := TNewCheckBox.Create(WizardForm);
  with NewCheckBox1 do
  begin
    
Name := 'NewCheckBox1';
    Parent := Panel1;
    Left := ScaleX(16);
    Top := ScaleY(248);
    Width := ScaleX(97);
    Height := ScaleY(17);
    Hint := 'TNewCheckBox';
    Caption := 'NewCheckBox1';
  end;

  { NewRadioButton1 }
  
NewRadioButton1 := TNewRadioButton.Create(WizardForm);
  with NewRadioButton1 do
  begin
    
Name := 'NewRadioButton1';
    Parent := Panel1;
    Left := ScaleX(16);
    Top := ScaleY(272);
    Width := ScaleX(113);
    Height := ScaleY(17);
    Hint := 'TNewRadioButton';
    Caption := 'NewRadioButton1';
  end;

  { NewListBox1 }
  
NewListBox1 := TNewListBox.Create(WizardForm);
  with NewListBox1 do
  begin
    
Name := 'NewListBox1';
    Parent := Panel1;
    Left := ScaleX(127);
    Top := ScaleY(120);
    Width := ScaleX(85);
    Height := ScaleY(81);
    Hint := 'TNewListBox';
    Items.Text := 'Line 2' + #13#10 +
         'Line 3' + #13#10 +
         'Line 4' + #13#10 +
         'Line 5' + #13#10 +
         'Line 6' + #13#10 +
         'Line 7' + #13#10 +
         'Line 8' + #13#10 +
         'Line 9' + #13#10 +
         'Line 10' + #13#10 +
         'Line 11' + #13#10 +
         'Line 12' + #13#10 +
         'Line 13';
    ItemIndex := -1;
  end;

  { Panel2 }
  
Panel2 := TPanel.Create(WizardForm);
  with Panel2 do
  begin
    
Name := 'Panel2';
    Parent := Panel1;
    Left := ScaleX(127);
    Top := ScaleY(224);
    Width := ScaleX(85);
    Height := ScaleY(41);
    Hint := 'TPanel';
    Caption := 'Panel2';
  end;

  { PasswordEdit1 }
  
PasswordEdit1 := TPasswordEdit.Create(WizardForm);
  with PasswordEdit1 do
  begin
    
Name := 'PasswordEdit1';
    Parent := Panel1;
    Left := ScaleX(127);
    Top := ScaleY(272);
    Width := ScaleX(85);
    Height := ScaleY(21);
    Hint := 'TPasswordEdit';
    Text := 'PasswordEdit1';
  end;

  { NewCheckListBox1 }
  
NewCheckListBox1 := TNewCheckListBox.Create(WizardForm);
  with NewCheckListBox1 do
  begin
    
Name := 'NewCheckListBox1';
    Parent := Panel1;
    Left := ScaleX(224);
    Top := ScaleY(120);
    Width := ScaleX(145);
    Height := ScaleY(81);
    Hint := 'TNewCheckListBox';
  end;

  { NewStaticText1 }
  
NewStaticText1 := TNewStaticText.Create(WizardForm);
  with NewStaticText1 do
  begin
    
Name := 'NewStaticText1';
    Parent := Panel1;
    Hint := 'TNewStaticText';
    Caption := 'NewStaticText1';
    Left := ScaleX(144);
    Top := ScaleY(95);
    Width := ScaleX(77);
    Height := ScaleY(14);
  end;

  { FolderTreeView1 }
  
FolderTreeView1 := TFolderTreeView.Create(WizardForm);
  with FolderTreeView1 do
  begin
    
Name := 'FolderTreeView1';
    Parent := Panel1;
    Left := ScaleX(224);
    Top := ScaleY(204);
    Width := ScaleX(145);
    Height := ScaleY(89);
    Cursor := crArrow;
    Hint := 'TFolderTreeView';
  end;

  { RichEditViewer1 }
  
RichEditViewer1 := TRichEditViewer.Create(WizardForm);
  with RichEditViewer1 do
  begin
    
Name := 'RichEditViewer1';
    Parent := Panel1;
    Left := ScaleX(376);
    Top := ScaleY(120);
    Width := ScaleX(105);
    Height := ScaleY(81);
    Hint := 'TRichEditViewer';
  end;

  { NewProgressBar1 }
  
NewProgressBar1 := TNewProgressBar.Create(WizardForm);
  with NewProgressBar1 do
  begin
    
Name := 'NewProgressBar1';
    Parent := Panel1;
    Left := ScaleX(16);
    Top := ScaleY(224);
    Width := ScaleX(105);
    Height := ScaleY(17);
    Hint := 'TNewProgressBar';
    Min := 0;
    Max := 100;
    Position := 70;
  end;

  { NewComboBox1 }
  
NewComboBox1 := TNewComboBox.Create(WizardForm);
  with NewComboBox1 do
  begin
    
Name := 'NewComboBox1';
    Parent := Panel1;
    Left := ScaleX(16);
    Top := ScaleY(80);
    Width := ScaleX(105);
    Height := ScaleY(21);
    Hint := 'TNewComboBox';
    Items.Text := 'Line 2' + #13#10 +
         'Line 3' + #13#10 +
         'Line 4' + #13#10 +
         'Line 5' + #13#10 +
         'Line 6' + #13#10 +
         'Line 7' + #13#10 +
         'Line 8' + #13#10 +
         'Line 9' + #13#10 +
         'Line 10' + #13#10 +
         'Line 11' + #13#10 +
         'Line 12' + #13#10 +
         'Line 13';
  end;

  { StartMenuFolderTreeView1 }
  
StartMenuFolderTreeView1 := TStartMenuFolderTreeView.Create(WizardForm);
  with StartMenuFolderTreeView1 do
  begin
    
Name := 'StartMenuFolderTreeView1';
    Parent := Panel1;
    Left := ScaleX(376);
    Top := ScaleY(204);
    Width := ScaleX(105);
    Height := ScaleY(89);
    Cursor := crArrow;
    Hint := 'TStartMenuFolderTreeView';
  end;

  { BrowserBtn }
  
BrowserBtn := TNewButton.Create(WizardForm);
  with BrowserBtn do
  begin
    
Name := 'BrowserBtn';
    Parent := Panel1;
    Left := ScaleX(248);
    Top := ScaleY(22);
    Width := ScaleX(35);
    Height := ScaleY(25);
    Caption := '目录';
  end;

  ISSkinFileCombo.TabOrder := 0;
  ISSkinIniCombo.TabOrder := 1;
  NewEdit1.TabOrder := 2;
  NewMemo1.TabOrder := 3;
  NewCheckBox1.TabOrder := 4;
  NewRadioButton1.TabOrder := 5;
  NewListBox1.TabOrder := 6;
  Panel2.TabOrder := 7;
  PasswordEdit1.TabOrder := 8;
  NewCheckListBox1.TabOrder := 9;
  NewStaticText1.TabOrder := 10;
  FolderTreeView1.TabOrder := 11;
  RichEditViewer1.TabOrder := 12;
  NewProgressBar1.TabOrder := 13;
  NewComboBox1.TabOrder := 14;
  StartMenuFolderTreeView1.TabOrder := 15;
  BrowserBtn.TabOrder := 16;

  Panel1.TabOrder := 2;

  { BlogBtn }
  
BlogBtn := TNewButton.Create(WizardForm);
  with BlogBtn do
  begin
    
Name := 'BlogBtn';
    Parent := WizardForm;
    Left := ScaleX(20);
    Top := ScaleY(327);
    Width := ScaleX(107);
    Height := ScaleY(23);
    Hint := '访问我的 BLOG';
    Caption := 'RESTOOLS'' BLOG';
  end;

  BlogBtn.TabOrder := 5;

{ ReservationBegin }
  // 这一部分是提供给你的,你可以在这里输入一些补充代码。
  
NewCheckListBox1.AddCheckBox('TNewCheckListBox', '', 0, True, True, False, True, nil);
  NewCheckListBox1.AddRadioButton('TNewCheckListBox', '', 1, True, True, nil);
  NewCheckListBox1.AddRadioButton('TNewCheckListBox', '', 1, False, True, nil);
  NewCheckListBox1.AddCheckBox('TNewCheckListBox', '', 0, True, True, False, True, nil);
  BrowserBtn.OnClick := @BrowserBtn_OnClick;
  ISSkinFileCombo.OnChange := @ISSkinFileCombo_OnChange;
  ISSkinIniCombo.OnChange := @ISSkinIniCombo_OnChange;
  BlogBtn.OnClick := @BlogBtn_OnClick;
{ ReservationEnd }
end;
// 不要修改这一段代码,它是自动生成的。
{ RedesignWizardFormEnd } // 不要删除这一行代码。

function EnumResName(hModule: THandle; lpType, lpName: String; lParam: Longint): Boolean;
begin
  
ISSkinIniCombo.Items.Append(lpName);
  Result := True;
end;

procedure ISSkinIniCombo_OnChange(Sender: TObject);
var
  
SkinFile, SkinIni: String;
begin
  try
    
SkinFile := '';
    SkinIni := '';
    if ISSkinFileCombo.Items[ISSkinFileCombo.ItemIndex] <> '' then
      
SkinFile := SkinFilePath+'\'+ISSkinFileCombo.Items[ISSkinFileCombo.ItemIndex];
    if ISSkinIniCombo.Items[ISSkinIniCombo.ItemIndex] <> '' then
      
SkinIni := ISSkinIniCombo.Items[ISSkinIniCombo.ItemIndex];

    LoadSkin(SkinFile, SkinIni);
  except
  end
;
end;

procedure ISSkinFileCombo_OnChange(Sender: TObject);
var
  
hSkin: THandle;
  i, DelIndex: Integer;
  S, SkinFile, SkinIni: String;
begin
  try
    
hSkin:=LoadLibrary(SkinFilePath+'\'+ISSkinFileCombo.Items[ISSkinFileCombo.ItemIndex]);
    try
      
ISSkinIniCombo.Items.Clear;

      EnumResourceNames(hSkin, 'TEXTFILE', CallbackAddr('EnumResName'), 0);

      DelIndex := -1;
      for i := 0 to ISSkinIniCombo.Items.Count - 1 do
      begin
        
S := ISSkinIniCombo.Items[i];
        if CompareText(S, 'THEMES_INI')=0 then
          
DelIndex := i;
        StringChange(S, '_', '.');
        ISSkinIniCombo.Items[i] := S;
      end;

      if DelIndex >= 0 then
        
ISSkinIniCombo.Items.Delete(DelIndex);

      if ISSkinIniCombo.Items.Count >= 0 then
        
ISSkinIniCombo.ItemIndex := ISSkinIniCombo.Items.Count - 1;
    finally
      
FreeLibrary(hSkin);
    end;

    SkinFile := '';
    SkinIni := '';
    if ISSkinFileCombo.Items[ISSkinFileCombo.ItemIndex] <> '' then
      
SkinFile := SkinFilePath+'\'+ISSkinFileCombo.Items[ISSkinFileCombo.ItemIndex];
    if ISSkinIniCombo.Items[ISSkinIniCombo.ItemIndex] <> '' then
      
SkinIni := ISSkinIniCombo.Items[ISSkinIniCombo.ItemIndex];

    LoadSkin(SkinFile, SkinIni);
  except
  end
;
end;

procedure FindSkinFile();
var
  
FindRec: TFindRec;
begin
  
ISSkinFileCombo.Items.Clear;
  if FindFirst(SkinFilePath+'\*.cjstyles', FindRec) then begin
    try
      repeat
        if
FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
          
ISSkinFileCombo.Items.Append(FindRec.Name);
      until not FindNext(FindRec);
    finally
      
FindClose(FindRec);
    end;
  end;
end;

procedure BrowserBtn_OnClick(Sender: TObject);
begin
  if
BrowseForFolder('请选择 ISSkin 皮肤所在路径:', SkinFilePath, False) then
  begin
    
FindSkinFile();
    UnloadSkin;
  end;
end;

function InitializeSetup(): Boolean;
begin
  if
SkinFilePath='' then
    
SkinFilePath := ExtractFileDir(ExpandConstant('{srcexe}'))+'\Styles';
  LoadSkin('', '');
  Result := True;
end;

procedure InitializeWizard();
begin
  
RedesignWizardForm;
  FindSkinFile();
  ISSkinFileCombo.Sorted := True;
end;

Procedure SetAppTitle(Value: String);
var
  
n: HWND;
begin
  
n:=GetWindowLong(MainForm.Handle, -8);
  if n <> 0 then SetWindowText(n, PChar(Value));
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  
WizardForm.NextButton.Hide;
  WizardForm.CancelButton.Caption := '关闭';
  SetAppTitle('ISSKIN 皮肤预览程序');
end;





评论: 15 | 引用: 0 | 查看次数: 17059
xin [2013-02-05 01:23 PM]
引用来自 河豚 引用来自 河豚
老大,问一下为哈汉化版用不了啊....

这个脚本需要我的增强版本才能编译.
如果你上网搜索 Inno Setup 的版本, 只需要看见有使用 restools 的编译器的集成版 Inno Setup , 都能编译这个脚本.
河豚 [2013-02-05 10:19 AM]
老大,问一下为哈汉化版用不了啊....
lovelost [2012-08-15 05:07 PM]
Pulsar.skin这个皮肤文件该如何调用啊,很漂亮,谢谢。
WLDNA [2012-06-04 05:36 PM]
引用来自 WLDNA 引用来自 WLDNA
引用来自 xin这个是直接编入安装程序的皮肤引擎, 非 ISSkin 皮肤. 目前这个分支项目经测试有不少缺陷, 所以暂时搁置. 也不会对外发布.


刚刚手快了,没写上内容,抱歉。

今天看到这个消息,特意重新下载了这个安装包,效果果然很炫。
皮肤应该是 AlphaControls 的吧,这个控件做的一直不错。

不过,部分效果比 AlphaControls现在的版本要炫,Restools就是牛啊,^_^
WLDNA [2012-06-04 05:33 PM]
引用来自 xin 引用来自 xin
这个是直接编入安装程序的皮肤引擎, 非 ISSkin 皮肤. 目前这个分支项目经测试有不少缺陷, 所以暂时搁置. 也不会对外发布.
冰水热咖啡 [2012-06-01 08:37 PM]
自己已解决,换成
procedure InitializeWizard();
begin
WizardForm.BorderIcons:= [biMinimize];
WizardForm.BorderIcons:= [biSystemMenu, biMinimize];
end;
唉,只怪自己基础不够,希望没影响到您。
冰水热咖啡 [2012-05-31 07:06 PM]
老大!我想补充下刚才问的问题,这个问题问过几位inno高手都不知道。所以来请教您了,我用
procedure InitializeWizard();
begin
WizardForm.BORDERICONS := [biHelp, biSystemMenu, biMinimize];
end;来去除安装程序左上角也就是点击左上角图标后出现的‘关于安装程序’的说明,为什么这个与inno皮肤一起使用后就在标题栏出现个问号呢?问号就在最小化减号的旁边!
这是我用的皮肤代码[Code]
// Importing LoadSkin API from ISSkin.DLL
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';

// Importing UnloadSkin API from ISSkin.DLL
procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';

// Importing ShowWindow Windows API from User32.DLL
function ShowWindow(hWnd: Integer; uType: Integer): Integer;
external 'ShowWindow@user32.dll stdcall';

function InitializeSetup(): Boolean;
begin
    ExtractTemporaryFile('Office2007.cjstyles');
    LoadSkin(ExpandConstant('{tmp}\Office2007.cjstyles'), '');
    Result := True;
end;

procedure DeinitializeSetup();
begin
    // Hide Window before unloading skin so user does not get
    // a glimse of an unskinned window before it is closed.
    ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
    UnloadSkin();
end;每个示例代码都有问号,这是怎么回事呀!求restools帮帮忙,看着很不舒服,~~谢谢
冰水热咖啡 [2012-05-31 04:02 PM]
期待RESTOOLS 老大有更多好的作品,还有个问题,就是为什么只要使用了皮肤之后标题栏就有个问号呀?不知该如何去除~~
xin [2012-05-31 12:54 AM]
皮肤文件实际上是一个 DLL 文件, 如果你看见那个皮肤在 500 KB以内的, 那肯定是经过 UPX 压缩的, 现在很多被压缩过的程序都会被误报为病毒.
冰水热咖啡 [2012-05-30 00:46 AM]
RESTOOLS 老大,请问为什么预览某些皮肤时杀毒软件报程序被感染病毒呢?就自动删除了,怎么办?
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码: 验证码
内 容:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 5000 字 | UBB代码 开启 | [img]标签 关闭