Если ты собрался делать 3D на этом, то лет через 200 получится =D--- ISSurface полностью написана на Canvas`е (Умеет работать с bmp и jpg в данной версии png не поддерживается)
Проблема решена!При движении мыши по форме жутко поедает оперативную память и грузит одно ядро.
Проблема решена!При выходе ошибка, деинициализации нет.
доа =D / эт канвас - хоть что-то от него добился..[HR][/HR]P.S.: Спасибо за тест!Если ты собрался делать 3D на этом, то лет через 200 получится =D
приведи пример как это сделать!А че ты отрисовку миниатюры не сделаещь с помощью dwmapi.dll
Я просто не знаю как это сделать правильно в Delphi. Брал твои исходники, думал как-нибудь впихнуть но у меня ошибка в инсталле была с библеотекой была уже не помню какая. Как-то бросил. Ну.. меня и так все устраиваетприведи пример как это сделать!
////////////////////// Начало Taskbar ///////////////////////
type
TDwmThumbnailProperties = record
dwFlags: DWORD;
rcDestination, rcSource: TRect;
opacity: Byte;
fVisible, fSourceClientAreaOnly: BOOL;
end;
function DwmRegisterThumbnail(hwndDestination: HWND; hwndSource: HWND; var phThumbnailId: Longint): Longint; external 'DwmRegisterThumbnail@dwmapi.dll stdcall delayload';
function DwmUpdateThumbnailProperties(hThumbnailId: Longint; var ptnProperties: TDwmThumbnailProperties): Longint; external 'DwmUpdateThumbnailProperties@dwmapi.dll stdcall delayload';
function DwmIsCompositionEnabled(var pfEnabled: BOOL): Longint; external 'DwmIsCompositionEnabled@dwmapi.dll stdcall delayload';
function isWin6: boolean;
begin
if (GetWindowsVersion shr 24) < 6 then result:=false
else result:=true;
end;
function CompositionEnabled: boolean;
var
r: bool;
begin
if isWin6 then
if DwmIsCompositionEnabled(r) = 0 then result:=r
else result:=false;
end;
type
hDC=Longint;
TSize=record
cx:UINT;
cy:UINT;
end;
procedure InitWin6TaskBar;
var
ti:Longint;
tp:TDwmThumbnailProperties;
ClientRect:TRect;
begin
if CompositionEnabled then begin
with MainForm do begin
ClientWidth:=WizardForm.ClientWidth;
ClientHeight:=WizardForm.ClientHeight;
Left:=-ScaleX(1000);
Repaint;
Show;
end;
ClientRect.Right:=WizardForm.ClientWidth+ScaleX(8);
ClientRect.Bottom:=WizardForm.ClientHeight+ScaleY(35);
// для обычного (без скина (ниже))
// ClientRect.Right:=WizardForm.ClientWidth;
// ClientRect.Bottom:=WizardForm.ClientHeight;
DwmRegisterThumbnail(MainForm.Handle, WizardForm.Handle, ti);
tp.dwFlags := $10 or $8 or $1;
tp.fSourceClientAreaOnly := true;
tp.fVisible := true;
tp.opacity := 255;
tp.rcDestination := ClientRect;
DwmUpdateThumbnailProperties(ti, tp);
end;
end;
////////////////////// Конец Taskbar ////////////////////////
Процедура Win6TaskBarV1_2 так же сделана. Правда со скином я ее не пробовал.
Thanks! All tools inside the archive are actually needed in my tutorial. The BAT files are largely written by me, the rest is commonly available on the internet. Although I don't know what you mean by "rapid".Godmode_1, Well, for that matter, that is much more rapid programs, than the injectors, which are contained in the archive
He means that it's easier to do but your methode is also not badAlthough I don't know what you mean by "rapid".
Ah, now I get it, thanks!He means that it's easier to do but your methode is also not bad
; ЅЕ±ѕ: restools ( http://restools.hanzify.org )
; СЭКѕ InitializeLanguageDialog µДУГ·Ё.
; ЛьКЗТ»ёц±И УпСФ¶Ф»°їт ёьФзіцПЦµД Inno Setup КВјюЎЈ
; ·µ»ШЦµИз№ыОЄјЩ, УпСФ¶Ф»°їтЅ«І»»біцПЦ.
; ФЪХвёцКВјюЦРДгїЙТФК№УГ°ьАЁТФПВїШјюј°КфРФ
; TSelectLanguageForm = class(TSetupForm)
; property SelectLabel: TNewStaticText; read;
; property LangCombo: TNewComboBox; read;
; property OKButton: TNewButton; read;
; property CancelButton: TNewButton; read;
; property IconBitmapImage: TBitmapImage; read;
; end;
;
; function SelectLanguageForm: TSelectLanguageForm;
#ifndef IS_ENHANCED
#error Enhanced edition of Inno Setup (restools) is required to compile this script
#endif
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
DefaultGroupName=My Application
UninstallDisplayIcon={app}\MyProg.exe
SolidCompression=yes
Compression=lzma/ultra
OutputDir=userdocs:Inno Setup Examples Output
[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"
Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Types]
Name: "full"; Description: "full"
Name: "compact"; Description: "compact"
Name: "custom"; Description: "custom"; Flags: iscustom
[Components]
Name: "program"; Description: "app files"; Types: full compact custom; Flags: fixed
Name: "help"; Description: "help files"; Types: full
Name: "readme"; Description: "readme files"; Types: full
[Files]
Source: "compiler:Dll Pack\ISSkinU.dll"; DestDir: {app}; Flags: dontcopy
Source: "compiler:IS_Skin\Styles\Office2007.cjstyles"; DestDir: {tmp}; Flags: dontcopy
Source: "compiler:Examples\MyProg.exe"; DestDir: "{app}"; Components: program
Source: "compiler:Examples\MyProg1.chm"; DestDir: "{app}"; Components: help
Source: "compiler:Examples\Readme1.txt"; DestDir: "{app}"; Components: readme; Flags: isreadme
[Icons]
Name: "{group}\my application"; Filename: "{app}\MyProg.exe"
[B][[/B]code]
procedure LoadSkinU(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:ISSkinU.dll stdcall';
procedure UnloadSkinU(); external 'UnloadSkin@files:ISSkinU.dll stdcall';
function ShowWindow(hWnd: Integer; uType: Integer): Integer; external 'ShowWindow@user32.dll stdcall';
function InitializeLanguageDialog(): Boolean;
var
h: Integer;
begin
h := SelectLanguageForm.ClientHeight;
ExtractTemporaryFile('Office2007.cjstyles');
LoadSkinU(ExpandConstant('{tmp}\Office2007.cjstyles'), '');
SelectLanguageForm.ClientHeight := h;
Result := True;
end;
procedure DeinitializeSetup();
begin
ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
UnloadSkinU();
end;