Приветствую всех!
Вообщем есть ".dll" библиотека при помощи которой можно изменять внешний вид программы, правда она сделана для "Inno Setup" кто знает...
Inno Setup использует тот же язык программирования поэтому у меня появилась идея прикрутить ее к моей программе в Delphi.
В Inno Setup она устанавливается след. образом:
Т.е. добавляется в ресурсы сама библиотека и скин. После запуска программы они распаковываются в директорию "%tmp%"
Код:
[Files]
; Add the ISSkin DLL used for skinning Inno Setup installations.
Source: ISSkin.dll; DestDir: {app}; Flags: dontcopy
; Add the Visual Style resource contains resources used for skinning,
; you can also use Microsoft Visual Styles (*.msstyles) resources.
Source: Office2007.cjstyles; DestDir: {tmp}; Flags: dontcopy
Объявляем API функции.
Код:
// 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 glimpse of an unskinned window before it is closed.
ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
UnloadSkin();
end;
Внимание вопрос!) Возможно ли как то это прикрутить к моему Delphi проекту? И как это собственно сделать?
Я ведь затеял все это ради того, что в данном случае есть возможность использовать темы формата ".cjstyles".. Если кто то знает какой нибудь компонент для Delphi который бы работал с этим форматам - подскажите. Буду очень благодарен.
Заранее спасибо)