Ekspoint Posted December 5, 2014 Share Posted December 5, 2014 Ветка реестра* {1EAC1D02-C6AC-4FA6-9A44-96258C37C812CT}_is1 спасиб 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Ekspoint Posted December 6, 2014 Share Posted December 6, 2014 как удалить стр создания иконки в меню пуск или отключить ее если даже будет строка [icons]? 1 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted December 6, 2014 Share Posted December 6, 2014 (edited) как удалить стр создания иконки в меню пуск или отключить ее если даже будет строка [icons]? [Setup] DisableProgramGroupPage=yes А в справке трудно посмотреть? Edited December 6, 2014 by Kotyarko_O @ Quote Link to comment Short link Share on other sites More sharing options...
Ekspoint Posted December 6, 2014 Share Posted December 6, 2014 [Setup] DisableProgramGroupPage=yes А в справке трудно посмотреть? както не подумал,спасиб 1 1 @ Quote Link to comment Short link Share on other sites More sharing options...
fleshr Posted December 7, 2014 Share Posted December 7, 2014 Почему так распаковывает Filename: "{app}\DeSeRtod ModPack\tmpmods\7z.exe"; Parameters: "x *.7z -o..\..\res_mods\0.9.5 -y" А так нет? Filename: "{app}\DeSeRtod ModPack\tmpmods\7z.exe"; Parameters: "x *.7z -o..\..\res_mods\0.9.5 Common Test -y" Есть подозрения из-за добавления Common Test @ Quote Link to comment Short link Share on other sites More sharing options...
Azbuka Posted December 7, 2014 Share Posted December 7, 2014 Есть подозрения из-за добавления Common Test Это из-за пробелов. Надо так: Filename: "{app}\DeSeRtod ModPack\tmpmods\7z.exe"; Parameters: "x *.7z -o""..\..\res_mods\0.9.5 Common Test"" -y" @ Quote Link to comment Short link Share on other sites More sharing options...
Pokaritel_VBR Posted December 7, 2014 Share Posted December 7, 2014 (edited) Вот код из модпака джова , он делает вот такие кнопки dll:CallbackCtrl.dll isxdl.dll,, Прочие файлы :dotnetfx35setup.exe, russian.ini скрипт : ; Script generated by the Inno Setup Script Wizard.; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "My Program"#define MyAppVersion "1.5"#define MyAppPublisher "My Company, Inc."#define MyAppURL "http://www.example.com/"#define MyAppExeName "MyProg.exe" [setup]WizardImageFile=WizardImageExt.eng.bmp; NOTE: The value of AppId uniquely identifies this application.; Do not use the same AppId value in installers for other applications.; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)AppId={{3B6788C3-AC78-472A-BFB0-E9F4DE400C39}AppName={#MyAppName}AppVersion={#MyAppVersion};AppVerName={#MyAppName} {#MyAppVersion}AppPublisher={#MyAppPublisher}AppPublisherURL={#MyAppURL}AppSupportURL={#MyAppURL}AppUpdatesURL={#MyAppURL}DefaultDirName={pf}\{#MyAppName}DefaultGroupName={#MyAppName}OutputBaseFilename=setupCompression=lzmaSolidCompression=yes [Languages]Name: "english"; MessagesFile: "compiler:Default.isl" [Files]Source: "D:\Jove's Mod Pack Extended 0_9_1 (1)\{tmp}\btn1.png"; DestDir: "{app}"; Flags: ignoreversionSource: "D:\Jove's Mod Pack Extended 0_9_1 (1)\{tmp}\btn2.png"; DestDir: "{app}"; Flags: ignoreversionSource: "D:\Jove's Mod Pack Extended 0_9_1 (1)\{tmp}\btn3.png"; DestDir: "{app}"; Flags: ignoreversionSource: "D:\Jove's Mod Pack Extended 0_9_1 (1)\{tmp}\btn4.png"; DestDir: "{app}"; Flags: ignoreversionSource: "D:\Jove's Mod Pack Extended 0_9_1 (1)\{tmp}\btn5.png"; DestDir: "{app}"; Flags: ignoreversionSource: "D:\Jove's Mod Pack Extended 0_9_1 (1)\{tmp}\WizardImageExt.eng.bmp"; DestDir: "{app}"; Flags: ignoreversion Source: "D:\Jove's Mod Pack Extended 0_9_1 (1)\{tmp}\botva2.dll"; DestDir: "{app}"; Flags: ignoreversion Source: "D:\Jove's Mod Pack Extended 0_9_1 (1)\{tmp}\CallbackCtrl.dll"; DestDir: "{app}"; Flags: ignoreversionSource: "D:\Jove's Mod Pack Extended 0_9_1 (1)\{tmp}\isxdl.dll"; DestDir: "{app}"; Flags: ignoreversion; NOTE: Don't use "Flags: ignoreversion" on any shared system files //модуль для работы с библиотекой botva2.dll версии 0.9.5//Created by South.Tver 02.2011const BTN_MAX_PATH = 1024; //не изменять !!! //идентификаторы событий для кнопок BtnClickEventID = 1; BtnMouseEnterEventID = 2; BtnMouseLeaveEventID = 3; BtnMouseMoveEventID = 4; BtnMouseDownEventID = 5; BtnMouseUpEventID = 6; //выравнивание текста на кнопках balLeft = 0; //выравнивание текста по левому краю balCenter = 1; //горизонтальное выравнивание текста по центру balRight = 2; //выравнивание текста по правому краю balVCenter = 4; //вертикальное выравнивание текста по центруtype #ifndef UNICODE AnsiChar = Char; #endif TBtnEventProc = procedure(h:HWND); TTextBuf = array [0..BTN_MAX_PATH-1] of AnsiChar; //не менять размерность массива !!!//для выполнения нажатий на кнопки нужен innocallbackfunction WrapBtnCallback(Callback: TBtnEventProc; ParamCount: Integer): Longword; external 'wrapcallbackaddr@{tmp}\CallbackCtrl.dll stdcall delayload';function ImgLoad(Wnd :HWND; FileName :PAnsiChar; Left, Top, Width, Height :integer; Stretch, IsBkg :boolean) :Longint; external 'ImgLoad@{tmp}\botva2.dll stdcall delayload';//загружает изображение в память, сохраняет переданные параметры//Wnd - хэндл окна, в котором будет выведено изображение//FileName - файл изображения//Left,Top - координаты верхнего левого угла вывода изображения (в координатах клиентской области Wnd)//Width,Height - ширина, высота изображения// если Stretch=True, то изображение будет растянуто/сжато в прямоугольной области// Rect.Left:=Left;// Rect.Top:=Top;// Rect.Right:=Left+Width;// Rect.Bottom:=Top+Height;// если Stretch=False, то параметры Width,Height игнорируются и вычисляются самой ImgLoad, т.е. можно передать 0//Stretch - масштабировать изображение или нет//IsBkg - если IsBkg=True, изображение будет выведено на фоне формы,// поверх него будут отрисованы графические объекты (TLabel, TBitmapImage и т.д.),// затем поверх всего будут выведены изображения с флагом IsBkg=False//возвращаемое значение - указатель на структуру, хранящей изображение и его парметры, приведенный к типу Longint//изображения будут выведены в той последовательности, в которой вызывается ImgLoadprocedure ImgSetVisiblePart(img:Longint; NewLeft, NewTop, NewWidth, NewHeight : integer); external 'ImgSetVisiblePart@{tmp}\botva2.dll stdcall delayload';//сохраняет новые координаты видимой части изображения, новую ширину и высоту. в координатах оригинального изображения//img - значение полученное при вызове ImgLoad.//NewLeft,NewTop - новый левый верхний угол видимой области.//NewWidth,NewHeight - новая ширина, высота видимой области.//PS изначально (при вызове ImgLoad) изображение считается полностью видимым.// если возникла необходимость отображать только часть картинки, то используем эту процедуруprocedure ImgGetVisiblePart(img:Longint; var Left, Top, Width, Height : integer); external 'ImgGetVisiblePart@{tmp}\botva2.dll stdcall delayload';//возвращает координаты видимой части изображения, ширину и высоту//img - значение полученное при вызове ImgLoad//NewLeft,NewTop - левый верхний угол видимой области//NewWidth,NewHeight - ширина, высота видимой области.procedure ImgSetPosition(img :Longint; NewLeft, NewTop, NewWidth, NewHeight :integer); external 'ImgSetPosition@{tmp}\botva2.dll stdcall delayload';//сохраняет новые координаты для вывода изображения, новую ширину и высоту. в координатах родительского окна//img - значение полученное при вызове ImgLoad//NewLeft,NewTop - новый левый верхний угол//NewWidth,NewHeight - новая ширина, высота. если в ImgLoad был передан Stretch=False, то NewWidth,NewHeight игнорируютсяprocedure ImgGetPosition(img:Longint; var Left, Top, Width, Height:integer); external 'ImgGetPosition@{tmp}\botva2.dll stdcall delayload';//возвращает координаты вывода изображения, ширину и высоту//img - значение полученное при вызове ImgLoad//Left,Top - левый верхний угол//Width,Height - ширина, высота.procedure ImgSetVisibility(img :Longint; Visible :boolean); external 'ImgSetVisibility@{tmp}\botva2.dll stdcall delayload';//сохраняет параметр видимости изображения//img - значение полученное при вызове ImgLoad//Visible - видимостьfunction ImgGetVisibility(img:Longint):boolean; external 'ImgGetVisibility@{tmp}\botva2.dll stdcall delayload';//img - значение полученное при вызове ImgLoad//возвращаемое значение - видимость изображенияprocedure ImgSetTransparent(img:Longint; Value:integer); external 'ImgSetTransparent@{tmp}\botva2.dll stdcall delayload';//устанавливает прозрачность изображения//img - значение полученное при вызове ImgLoad//Value - прозрачность (0-255)function ImgGetTransparent(img:Longint):integer; external 'ImgGetTransparent@{tmp}\botva2.dll stdcall delayload';//получить значение прозрачности//img - значение полученное при вызове ImgLoad//возвращаемое значение - текущая прозрачность изображенияprocedure ImgRelease(img :Longint); external 'ImgRelease@{tmp}\botva2.dll stdcall delayload';//удаляет изображение из памяти//img - значение полученное при вызове ImgLoadprocedure ImgApplyChanges(h:HWND); external 'ImgApplyChanges@{tmp}\botva2.dll stdcall delayload';//формирует окончательное изображение для вывода экран,//учитывая все изменения внесенные вызовами ImgLoad, ImgSetPosition, ImgSetVisibility, ImgRelease и обновляет окно//h - хэндл окна, для которого необходимо сформировать новое изображение function BtnCreate(hParent :HWND; Left, Top, Width, Height :integer; FileName :PAnsiChar; ShadowWidth :integer; IsCheckBtn :boolean) :HWND; external 'BtnCreate@{tmp}\botva2.dll stdcall delayload';//hParent - хэндл окна-родителя, на котором будет создана кнопка//Left,Top,//Width,Height - без комментариев. то же что и для обычных кнопок//FileName - файл с изображением состояний кнопки// для обычной кнопки нужно 4 состояния кнопки (соответственно 4 изображения)// для кнопки с IsCheckBtn=True нужно 8 изображений (как для чекбокса)// изображения состояний должны располагаться вертикально//ShadowWidth - кол-во пикселей от края рисунка кнопки, до реальной ее границы на рисунке.// нужно чтобы состояние кнопки и курсор на ней менялись как положено//IsCheckBtn - если True, то будет создана кнопка (аналог CheckBox) имеющая включенное и выключенное состояние// если False, то создастся обычная кнопка//возвращаемое значение - хэндл созданной кнопкиprocedure BtnSetText(h :HWND; Text :PAnsiChar); external 'BtnSetText@{tmp}\botva2.dll stdcall delayload';//устанавливает текст на кнопке (аналог Button.Caption:='bla-bla-bla')//h - хэндл кнопки (результат возвращенный BtnCreate)//Text - текст, который мы хотим увидеть на кнопкеfunction BtnGetText_(h:HWND; var Text:TTextBuf):integer; external 'BtnGetText@{tmp}\botva2.dll stdcall delayload';//получает текст кнопки//h - хэндл кнопки (результат возвращенный BtnCreate)//Text - буфер принимающий текст кнопки//возвращаемое значение - длина текстаprocedure BtnSetTextAlignment(h :HWND; HorIndent, VertIndent :integer; Alignment :DWORD); external 'BtnSetTextAlignment@{tmp}\botva2.dll stdcall delayload';//устанавливает выравнивание текста на кнопке//h - хэндл кнопки (результат возвращенный BtnCreate)//HorIndent - горизонтальный отступ текста от края кнопки//VertIndent - вертикальный отступ текста от края кнопки//Alignment - выравнивание текста. задается константами balLeft, balCenter, balRight, balVCenter,// или комбинацией balVCenter с остальными. например, balVCenter or balRightprocedure BtnSetFont(h :HWND; Font :Cardinal); external 'BtnSetFont@{tmp}\botva2.dll stdcall delayload';//устанавливает шрифт для кнопки//h - хэндл кнопки (результат возвращенный BtnCreate)//Font - дескриптор устанавливаемого шрифта// чтобы не мучаться с WinAPI-шными функциями можно создать шрифт стандартными средствами инно и передать его хэндл// например,// var// Font:TFont;// . . .// begin// . . .// Font:=TFont.Create;// все свойства можно не устанавливать, при создании свойства заполняются значениями по умолчанию. меняем только то что нам нужно// with Font do begin// Name:='Tahoma';// Size:=10;// . . .// end;// BtnSetFont(hBtn,Font.Handle);// . . .// end;// ну и при выходе из программы (или когда он станет не нужен) не забываем уничтожить свой шрифт Font.Free;procedure BtnSetFontColor(h :HWND; NormalFontColor, FocusedFontColor, PressedFontColor, DisabledFontColor :Cardinal); external 'BtnSetFontColor@{tmp}\botva2.dll stdcall delayload';//устанавливает цвет шрифта для кнопки во включенном и выключенном сосотоянии//h - хэндл кнопки (результат возвращенный BtnCreate)//NormalFontColor - цвет текста на кнопе в нормальном состоянии//FocusedFontColor - цвет текста на кнопе в подсвеченном состоянии//PressedFontColor - цвет текста на кнопе в нажатом состоянии//DisabledFontColor - цвет текста на кнопе в отключенном состоянииfunction BtnGetVisibility(h :HWND) :boolean; external 'BtnGetVisibility@{tmp}\botva2.dll stdcall delayload';//получает видимость кнопки (аналог f:=Button.Visible)//h - хэндл кнопки (результат возвращенный BtnCreate)//возвращаемое значение - видимость кнопкиprocedure BtnSetVisibility(h :HWND; Value :boolean); external 'BtnSetVisibility@{tmp}\botva2.dll stdcall delayload';//устанавливает видимость кнопки (аналог Button.Visible:=True / Button.Visible:=False)//h - хэндл кнопки (результат возвращенный BtnCreate)//Value - значение видимостиfunction BtnGetEnabled(h :HWND) :boolean; external 'BtnGetEnabled@{tmp}\botva2.dll stdcall delayload';//получает доступность кнопки (аналог f:=Button.Enabled)//h - хэндл кнопки (результат возвращенный BtnCreate)//возвращаемое значение - доступность кнопкиprocedure BtnSetEnabled(h :HWND; Value :boolean); external 'BtnSetEnabled@{tmp}\botva2.dll stdcall delayload';//устанвливает доступность кнопки (аналог Button.Enabled:=True / Button.Enabled:=False)//h - хэндл кнопки (результат возвращенный BtnCreate)//Value - значение доступности кнопкиfunction BtnGetChecked(h :HWND) :boolean; external 'BtnGetChecked@{tmp}\botva2.dll stdcall delayload';//получает состояние (включена/выключена) кнопки (аналог f:=Checkbox.Checked)//h - хэндл кнопки (результат возвращенный BtnCreate)procedure BtnSetChecked(h :HWND; Value :boolean); external 'BtnSetChecked@{tmp}\botva2.dll stdcall delayload';//устанвливает состояние (включена/выключена) кнопки (аналог Сheckbox.Checked:=True / Сheckbox.Checked:=False)//h - хэндл кнопки (результат возвращенный BtnCreate)//Value - значение состояния кнопкиprocedure BtnSetEvent(h :HWND; EventID :integer; Event :Longword); external 'BtnSetEvent@{tmp}\botva2.dll stdcall delayload';//устанавливает событие для кнопки//h - хэндл кнопки (результат возвращенный BtnCreate)//EventID - идентификатор события, заданный константами BtnClickEventID, BtnMouseEnterEventID, BtnMouseLeaveEventID, BtnMouseMoveEventID//Event - адрес процедуры выполняемой при наступлении указанного события//пример использования - BtnSetEvent(hBtn, BtnClickEventID, WrapBtnCallback(@BtnClick,1));procedure BtnGetPosition(h:HWND; var Left, Top, Width, Height: integer); external 'BtnGetPosition@{tmp}\botva2.dll stdcall delayload';//получает координаты левого верхнего угла и размер кнопки//h - хэндл кнопки (результат возвращенный BtnCreate)//Left, Top - координаты верхнего левого угла (в координатах родительского окна)//Width, Height - ширина, высота кнопкиprocedure BtnSetPosition(h:HWND; NewLeft, NewTop, NewWidth, NewHeight: integer); external 'BtnSetPosition@{tmp}\botva2.dll stdcall delayload';//устанавливает координаты левого верхнего угла и размер кнопки//h - хэндл кнопки (результат возвращенный BtnCreate)//NewLeft, NewTop - новые координаты верхнего левого угла (в координатах родительского окна)//NewWidth, NewHeight - новые ширина, высота кнопкиprocedure BtnRefresh(h :HWND); external 'BtnRefresh@{tmp}\botva2.dll stdcall delayload';//немедленно перерисовывает кнопку, в обход очереди сообщений. вызывать, если кнопка не успевает перерисовываться//h - хэндл кнопки (результат возвращенный BtnCreate)procedure BtnSetCursor(h:HWND; hCur:Cardinal); external 'BtnSetCursor@{tmp}\botva2.dll stdcall delayload';//устанавливает курсор для кнопки//h - хэндл кнопки (результат возвращенный BtnCreate)//hCur - дескриптор устанавливаемого курсора//DestroyCursor вызывать не обязательно, он будет уничтожен при вызове gdipShutDown;function GetSysCursorHandle(id:integer):Cardinal; external 'GetSysCursorHandle@{tmp}\botva2.dll stdcall delayload';//загружает стандартный курсор по его идентификатору//id - идентификатор стандартного курсора. идентификаторы стандартных курсоров задаются константами OCR_... , значения которых ищем в инете//возвращаемое значение - дескриптор загруженного курсораprocedure gdipShutdown; external 'gdipShutdown@{tmp}\botva2.dll stdcall delayload';//обязательно вызвать при завершении приложения procedure CreateFormFromImage(h:HWND; FileName:PAnsiChar); external 'CreateFormFromImage@{tmp}\botva2.dll stdcall delayload';//создать форму по PNG-рисунку (в принципе можно использовать другие форматы изображений)//h - хэндл окна//FileName - путь к файлу изображения//на такой форме не будут видны контролы (кнопки, чекбоксы, эдиты и т.д.) !!!function CreateBitmapRgn(DC: LongWord; Bitmap: HBITMAP; TransClr: DWORD; dX:integer; dY:integer): LongWord; external 'CreateBitmapRgn@{tmp}\botva2.dll stdcall delayload';//создать регион из битмапа//DC - контекст формы//Bitmap - битмап по которому будем строить регион//TransClr - цвет пикселей, которые не будут включены в регион (прозрачный цвет)//dX,dY - смещение региона на формеprocedure SetMinimizeAnimation(Value: Boolean); external 'SetMinimizeAnimation@{tmp}\botva2.dll stdcall delayload';//включить/выклюсить анимацию при сворачивании оконfunction GetMinimizeAnimation: Boolean; external 'GetMinimizeAnimation@{tmp}\botva2.dll stdcall delayload';//получить текущее состояние анимации сворачивания оконfunction ArrayOfAnsiCharToAnsiString(a:TTextBuf):AnsiString;var i:integer;begin i:=0; Result:=''; while a[i]<>#0 do begin Result:=Result+a[i]; i:=i+1; end;end;function BtnGetText(hBtn:HWND):AnsiString;var buf:TTextBuf;begin BtnGetText_(hBtn,buf); Result:=ArrayOfAnsiCharToAnsiString(buf); //медленно работает, как по другому сделать хзend; Edited December 7, 2014 by Pokaritel_VBR 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Ekspoint Posted December 7, 2014 Share Posted December 7, 2014 Вот код из модпака джова , он делает вот такие кнопки dll:CallbackCtrl.dll isxdl.dll,, Причие файлы :dotnetfx35setup.exe, russian.ini скрипт : ; Script generated by the Inno Setup Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "My Program" #define MyAppVersion "1.5" #define MyAppPublisher "My Company, Inc." #define MyAppURL "http://www.example.com/" #define MyAppExeName "MyProg.exe" [setup] WizardImageFile=WizardImageExt.eng.bmp ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) AppId={{3B6788C3-AC78-472A-BFB0-E9F4DE400C39} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DefaultGroupName={#MyAppName} OutputBaseFilename=setup Compression=lzma SolidCompression=yes [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" [Files] Source: "D:\Jove's Mod Pack Extended 0_9_1 (1)\{tmp}\btn1.png"; DestDir: "{app}"; Flags: ignoreversion Source: "D:\Jove's Mod Pack Extended 0_9_1 (1)\{tmp}\btn2.png"; DestDir: "{app}"; Flags: ignoreversion Source: "D:\Jove's Mod Pack Extended 0_9_1 (1)\{tmp}\btn3.png"; DestDir: "{app}"; Flags: ignoreversion Source: "D:\Jove's Mod Pack Extended 0_9_1 (1)\{tmp}\btn4.png"; DestDir: "{app}"; Flags: ignoreversion Source: "D:\Jove's Mod Pack Extended 0_9_1 (1)\{tmp}\btn5.png"; DestDir: "{app}"; Flags: ignoreversion Source: "D:\Jove's Mod Pack Extended 0_9_1 (1)\{tmp}\WizardImageExt.eng.bmp"; DestDir: "{app}"; Flags: ignoreversion Source: "D:\Jove's Mod Pack Extended 0_9_1 (1)\{tmp}\botva2.dll"; DestDir: "{app}"; Flags: ignoreversion Source: "D:\Jove's Mod Pack Extended 0_9_1 (1)\{tmp}\CallbackCtrl.dll"; DestDir: "{app}"; Flags: ignoreversion Source: "D:\Jove's Mod Pack Extended 0_9_1 (1)\{tmp}\isxdl.dll"; DestDir: "{app}"; Flags: ignoreversion ; NOTE: Don't use "Flags: ignoreversion" on any shared system files //модуль для работы с библиотекой botva2.dll версии 0.9.5//Created by South.Tver 02.2011const BTN_MAX_PATH = 1024; //не изменять !!! //идентификаторы событий для кнопок BtnClickEventID = 1; BtnMouseEnterEventID = 2; BtnMouseLeaveEventID = 3; BtnMouseMoveEventID = 4; BtnMouseDownEventID = 5; BtnMouseUpEventID = 6; //выравнивание текста на кнопках balLeft = 0; //выравнивание текста по левому краю balCenter = 1; //горизонтальное выравнивание текста по центру balRight = 2; //выравнивание текста по правому краю balVCenter = 4; //вертикальное выравнивание текста по центруtype #ifndef UNICODE AnsiChar = Char; #endif TBtnEventProc = procedure(h:HWND); TTextBuf = array [0..BTN_MAX_PATH-1] of AnsiChar; //не менять размерность массива !!!//для выполнения нажатий на кнопки нужен innocallbackfunction WrapBtnCallback(Callback: TBtnEventProc; ParamCount: Integer): Longword; external 'wrapcallbackaddr@{tmp}\CallbackCtrl.dll stdcall delayload';function ImgLoad(Wnd :HWND; FileName :PAnsiChar; Left, Top, Width, Height :integer; Stretch, IsBkg :boolean) :Longint; external 'ImgLoad@{tmp}\botva2.dll stdcall delayload';//загружает изображение в память, сохраняет переданные параметры//Wnd - хэндл окна, в котором будет выведено изображение//FileName - файл изображения//Left,Top - координаты верхнего левого угла вывода изображения (в координатах клиентской области Wnd)//Width,Height - ширина, высота изображения// если Stretch=True, то изображение будет растянуто/сжато в прямоугольной области// Rect.Left:=Left;// Rect.Top:=Top;// Rect.Right:=Left+Width;// Rect.Bottom:=Top+Height;// если Stretch=False, то параметры Width,Height игнорируются и вычисляются самой ImgLoad, т.е. можно передать 0//Stretch - масштабировать изображение или нет//IsBkg - если IsBkg=True, изображение будет выведено на фоне формы,// поверх него будут отрисованы графические объекты (TLabel, TBitmapImage и т.д.),// затем поверх всего будут выведены изображения с флагом IsBkg=False//возвращаемое значение - указатель на структуру, хранящей изображение и его парметры, приведенный к типу Longint//изображения будут выведены в той последовательности, в которой вызывается ImgLoadprocedure ImgSetVisiblePart(img:Longint; NewLeft, NewTop, NewWidth, NewHeight : integer); external 'ImgSetVisiblePart@{tmp}\botva2.dll stdcall delayload';//сохраняет новые координаты видимой части изображения, новую ширину и высоту. в координатах оригинального изображения//img - значение полученное при вызове ImgLoad.//NewLeft,NewTop - новый левый верхний угол видимой области.//NewWidth,NewHeight - новая ширина, высота видимой области.//PS изначально (при вызове ImgLoad) изображение считается полностью видимым.// если возникла необходимость отображать только часть картинки, то используем эту процедуруprocedure ImgGetVisiblePart(img:Longint; var Left, Top, Width, Height : integer); external 'ImgGetVisiblePart@{tmp}\botva2.dll stdcall delayload';//возвращает координаты видимой части изображения, ширину и высоту//img - значение полученное при вызове ImgLoad//NewLeft,NewTop - левый верхний угол видимой области//NewWidth,NewHeight - ширина, высота видимой области.procedure ImgSetPosition(img :Longint; NewLeft, NewTop, NewWidth, NewHeight :integer); external 'ImgSetPosition@{tmp}\botva2.dll stdcall delayload';//сохраняет новые координаты для вывода изображения, новую ширину и высоту. в координатах родительского окна//img - значение полученное при вызове ImgLoad//NewLeft,NewTop - новый левый верхний угол//NewWidth,NewHeight - новая ширина, высота. если в ImgLoad был передан Stretch=False, то NewWidth,NewHeight игнорируютсяprocedure ImgGetPosition(img:Longint; var Left, Top, Width, Height:integer); external 'ImgGetPosition@{tmp}\botva2.dll stdcall delayload';//возвращает координаты вывода изображения, ширину и высоту//img - значение полученное при вызове ImgLoad//Left,Top - левый верхний угол//Width,Height - ширина, высота.procedure ImgSetVisibility(img :Longint; Visible :boolean); external 'ImgSetVisibility@{tmp}\botva2.dll stdcall delayload';//сохраняет параметр видимости изображения//img - значение полученное при вызове ImgLoad//Visible - видимостьfunction ImgGetVisibility(img:Longint):boolean; external 'ImgGetVisibility@{tmp}\botva2.dll stdcall delayload';//img - значение полученное при вызове ImgLoad//возвращаемое значение - видимость изображенияprocedure ImgSetTransparent(img:Longint; Value:integer); external 'ImgSetTransparent@{tmp}\botva2.dll stdcall delayload';//устанавливает прозрачность изображения//img - значение полученное при вызове ImgLoad//Value - прозрачность (0-255)function ImgGetTransparent(img:Longint):integer; external 'ImgGetTransparent@{tmp}\botva2.dll stdcall delayload';//получить значение прозрачности//img - значение полученное при вызове ImgLoad//возвращаемое значение - текущая прозрачность изображенияprocedure ImgRelease(img :Longint); external 'ImgRelease@{tmp}\botva2.dll stdcall delayload';//удаляет изображение из памяти//img - значение полученное при вызове ImgLoadprocedure ImgApplyChanges(h:HWND); external 'ImgApplyChanges@{tmp}\botva2.dll stdcall delayload';//формирует окончательное изображение для вывода экран,//учитывая все изменения внесенные вызовами ImgLoad, ImgSetPosition, ImgSetVisibility, ImgRelease и обновляет окно//h - хэндл окна, для которого необходимо сформировать новое изображение function BtnCreate(hParent :HWND; Left, Top, Width, Height :integer; FileName :PAnsiChar; ShadowWidth :integer; IsCheckBtn :boolean) :HWND; external 'BtnCreate@{tmp}\botva2.dll stdcall delayload';//hParent - хэндл окна-родителя, на котором будет создана кнопка//Left,Top,//Width,Height - без комментариев. то же что и для обычных кнопок//FileName - файл с изображением состояний кнопки// для обычной кнопки нужно 4 состояния кнопки (соответственно 4 изображения)// для кнопки с IsCheckBtn=True нужно 8 изображений (как для чекбокса)// изображения состояний должны располагаться вертикально//ShadowWidth - кол-во пикселей от края рисунка кнопки, до реальной ее границы на рисунке.// нужно чтобы состояние кнопки и курсор на ней менялись как положено//IsCheckBtn - если True, то будет создана кнопка (аналог CheckBox) имеющая включенное и выключенное состояние// если False, то создастся обычная кнопка//возвращаемое значение - хэндл созданной кнопкиprocedure BtnSetText(h :HWND; Text :PAnsiChar); external 'BtnSetText@{tmp}\botva2.dll stdcall delayload';//устанавливает текст на кнопке (аналог Button.Caption:='bla-bla-bla')//h - хэндл кнопки (результат возвращенный BtnCreate)//Text - текст, который мы хотим увидеть на кнопкеfunction BtnGetText_(h:HWND; var Text:TTextBuf):integer; external 'BtnGetText@{tmp}\botva2.dll stdcall delayload';//получает текст кнопки//h - хэндл кнопки (результат возвращенный BtnCreate)//Text - буфер принимающий текст кнопки//возвращаемое значение - длина текстаprocedure BtnSetTextAlignment(h :HWND; HorIndent, VertIndent :integer; Alignment :DWORD); external 'BtnSetTextAlignment@{tmp}\botva2.dll stdcall delayload';//устанавливает выравнивание текста на кнопке//h - хэндл кнопки (результат возвращенный BtnCreate)//HorIndent - горизонтальный отступ текста от края кнопки//VertIndent - вертикальный отступ текста от края кнопки//Alignment - выравнивание текста. задается константами balLeft, balCenter, balRight, balVCenter,// или комбинацией balVCenter с остальными. например, balVCenter or balRightprocedure BtnSetFont(h :HWND; Font :Cardinal); external 'BtnSetFont@{tmp}\botva2.dll stdcall delayload';//устанавливает шрифт для кнопки//h - хэндл кнопки (результат возвращенный BtnCreate)//Font - дескриптор устанавливаемого шрифта// чтобы не мучаться с WinAPI-шными функциями можно создать шрифт стандартными средствами инно и передать его хэндл// например,// var// Font:TFont;// . . .// begin// . . .// Font:=TFont.Create;// все свойства можно не устанавливать, при создании свойства заполняются значениями по умолчанию. меняем только то что нам нужно// with Font do begin// Name:='Tahoma';// Size:=10;// . . .// end;// BtnSetFont(hBtn,Font.Handle);// . . .// end;// ну и при выходе из программы (или когда он станет не нужен) не забываем уничтожить свой шрифт Font.Free;procedure BtnSetFontColor(h :HWND; NormalFontColor, FocusedFontColor, PressedFontColor, DisabledFontColor :Cardinal); external 'BtnSetFontColor@{tmp}\botva2.dll stdcall delayload';//устанавливает цвет шрифта для кнопки во включенном и выключенном сосотоянии//h - хэндл кнопки (результат возвращенный BtnCreate)//NormalFontColor - цвет текста на кнопе в нормальном состоянии//FocusedFontColor - цвет текста на кнопе в подсвеченном состоянии//PressedFontColor - цвет текста на кнопе в нажатом состоянии//DisabledFontColor - цвет текста на кнопе в отключенном состоянииfunction BtnGetVisibility(h :HWND) :boolean; external 'BtnGetVisibility@{tmp}\botva2.dll stdcall delayload';//получает видимость кнопки (аналог f:=Button.Visible)//h - хэндл кнопки (результат возвращенный BtnCreate)//возвращаемое значение - видимость кнопкиprocedure BtnSetVisibility(h :HWND; Value :boolean); external 'BtnSetVisibility@{tmp}\botva2.dll stdcall delayload';//устанавливает видимость кнопки (аналог Button.Visible:=True / Button.Visible:=False)//h - хэндл кнопки (результат возвращенный BtnCreate)//Value - значение видимостиfunction BtnGetEnabled(h :HWND) :boolean; external 'BtnGetEnabled@{tmp}\botva2.dll stdcall delayload';//получает доступность кнопки (аналог f:=Button.Enabled)//h - хэндл кнопки (результат возвращенный BtnCreate)//возвращаемое значение - доступность кнопкиprocedure BtnSetEnabled(h :HWND; Value :boolean); external 'BtnSetEnabled@{tmp}\botva2.dll stdcall delayload';//устанвливает доступность кнопки (аналог Button.Enabled:=True / Button.Enabled:=False)//h - хэндл кнопки (результат возвращенный BtnCreate)//Value - значение доступности кнопкиfunction BtnGetChecked(h :HWND) :boolean; external 'BtnGetChecked@{tmp}\botva2.dll stdcall delayload';//получает состояние (включена/выключена) кнопки (аналог f:=Checkbox.Checked)//h - хэндл кнопки (результат возвращенный BtnCreate)procedure BtnSetChecked(h :HWND; Value :boolean); external 'BtnSetChecked@{tmp}\botva2.dll stdcall delayload';//устанвливает состояние (включена/выключена) кнопки (аналог Сheckbox.Checked:=True / Сheckbox.Checked:=False)//h - хэндл кнопки (результат возвращенный BtnCreate)//Value - значение состояния кнопкиprocedure BtnSetEvent(h :HWND; EventID :integer; Event :Longword); external 'BtnSetEvent@{tmp}\botva2.dll stdcall delayload';//устанавливает событие для кнопки//h - хэндл кнопки (результат возвращенный BtnCreate)//EventID - идентификатор события, заданный константами BtnClickEventID, BtnMouseEnterEventID, BtnMouseLeaveEventID, BtnMouseMoveEventID//Event - адрес процедуры выполняемой при наступлении указанного события//пример использования - BtnSetEvent(hBtn, BtnClickEventID, WrapBtnCallback(@BtnClick,1));procedure BtnGetPosition(h:HWND; var Left, Top, Width, Height: integer); external 'BtnGetPosition@{tmp}\botva2.dll stdcall delayload';//получает координаты левого верхнего угла и размер кнопки//h - хэндл кнопки (результат возвращенный BtnCreate)//Left, Top - координаты верхнего левого угла (в координатах родительского окна)//Width, Height - ширина, высота кнопкиprocedure BtnSetPosition(h:HWND; NewLeft, NewTop, NewWidth, NewHeight: integer); external 'BtnSetPosition@{tmp}\botva2.dll stdcall delayload';//устанавливает координаты левого верхнего угла и размер кнопки//h - хэндл кнопки (результат возвращенный BtnCreate)//NewLeft, NewTop - новые координаты верхнего левого угла (в координатах родительского окна)//NewWidth, NewHeight - новые ширина, высота кнопкиprocedure BtnRefresh(h :HWND); external 'BtnRefresh@{tmp}\botva2.dll stdcall delayload';//немедленно перерисовывает кнопку, в обход очереди сообщений. вызывать, если кнопка не успевает перерисовываться//h - хэндл кнопки (результат возвращенный BtnCreate)procedure BtnSetCursor(h:HWND; hCur:Cardinal); external 'BtnSetCursor@{tmp}\botva2.dll stdcall delayload';//устанавливает курсор для кнопки//h - хэндл кнопки (результат возвращенный BtnCreate)//hCur - дескриптор устанавливаемого курсора//DestroyCursor вызывать не обязательно, он будет уничтожен при вызове gdipShutDown;function GetSysCursorHandle(id:integer):Cardinal; external 'GetSysCursorHandle@{tmp}\botva2.dll stdcall delayload';//загружает стандартный курсор по его идентификатору//id - идентификатор стандартного курсора. идентификаторы стандартных курсоров задаются константами OCR_... , значения которых ищем в инете//возвращаемое значение - дескриптор загруженного курсораprocedure gdipShutdown; external 'gdipShutdown@{tmp}\botva2.dll stdcall delayload';//обязательно вызвать при завершении приложения procedure CreateFormFromImage(h:HWND; FileName:PAnsiChar); external 'CreateFormFromImage@{tmp}\botva2.dll stdcall delayload';//создать форму по PNG-рисунку (в принципе можно использовать другие форматы изображений)//h - хэндл окна//FileName - путь к файлу изображения//на такой форме не будут видны контролы (кнопки, чекбоксы, эдиты и т.д.) !!!function CreateBitmapRgn(DC: LongWord; Bitmap: HBITMAP; TransClr: DWORD; dX:integer; dY:integer): LongWord; external 'CreateBitmapRgn@{tmp}\botva2.dll stdcall delayload';//создать регион из битмапа//DC - контекст формы//Bitmap - битмап по которому будем строить регион//TransClr - цвет пикселей, которые не будут включены в регион (прозрачный цвет)//dX,dY - смещение региона на формеprocedure SetMinimizeAnimation(Value: Boolean); external 'SetMinimizeAnimation@{tmp}\botva2.dll stdcall delayload';//включить/выклюсить анимацию при сворачивании оконfunction GetMinimizeAnimation: Boolean; external 'GetMinimizeAnimation@{tmp}\botva2.dll stdcall delayload';//получить текущее состояние анимации сворачивания оконfunction ArrayOfAnsiCharToAnsiString(a:TTextBuf):AnsiString;var i:integer;begin i:=0; Result:=''; while a[i]<>#0 do begin Result:=Result+a[i]; i:=i+1; end;end;function BtnGetText(hBtn:HWND):AnsiString;var buf:TTextBuf;begin BtnGetText_(hBtn,buf); Result:=ArrayOfAnsiCharToAnsiString(buf); //медленно работает, как по другому сделать хзend;и что тебе надо? я не понял @ Quote Link to comment Short link Share on other sites More sharing options...
Pokaritel_VBR Posted December 7, 2014 Share Posted December 7, 2014 Потестели , если хотите фишку такую @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted December 7, 2014 Share Posted December 7, 2014 Вот код из модпака джова , он делает вот такие кнопки Во-первых, и чё?Во-вторых, "он делает"? 1 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Pokaritel_VBR Posted December 7, 2014 Share Posted December 7, 2014 Во-первых, и чё? Во-вторых, "он делает"? Молодец , подъ****** 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted December 7, 2014 Share Posted December 7, 2014 (edited) @Pokaritel_VBR, слушай, ты скинул обычный скрипт ботвы. Пример которого есть на всех сайтах, связанных с инно. В том числе, и в примерах, которые я скидывал (они есть в шапке). И какой реакции ты ещё хотел? Edited December 7, 2014 by Kotyarko_O 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Ekspoint Posted December 7, 2014 Share Posted December 7, 2014 Как запретить запуск установщика дважды с выводом сообщения на своей форме? если такое вообще есть 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted December 7, 2014 Share Posted December 7, 2014 Как запретить запуск установщика дважды с выводом сообщения на своей форме? если такое вообще есть Спецом, что-ли, вопрос копируешь? @ Quote Link to comment Short link Share on other sites More sharing options...
Ekspoint Posted December 7, 2014 Share Posted December 7, 2014 Спецом, что-ли, вопрос копируешь? 07.12.jpg я даже не знаю где это 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted December 7, 2014 Share Posted December 7, 2014 я даже не знаю где это И вопрос абсолютно идентичен, ага. Зачем тебе это? ImScripts.rar @ Quote Link to comment Short link Share on other sites More sharing options...
Ekspoint Posted December 7, 2014 Share Posted December 7, 2014 И вопрос абсолютно идентичен, ага. Зачем тебе это? ImScripts.rar спасибо, а есть такие тупые которые поверх ставят так так что то не скачалось,вот и ищу а где весть текст редактировать,чет не найти @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted December 7, 2014 Share Posted December 7, 2014 (edited) а есть такие тупые которые поверх ставят так так что то не скачалось,вот и ищу Я ничего не понял. а где весть текст редактировать,чет не найти ShowMessageEx.iss. И в файле локализации "SetupAppRunningError". з.ы. легче использовать такой способ: Procedure OneSetup(); begin If FindWindowByClassName('TWizardForm') <> 0 then begin MsgBoxEx(0, 'Одна из копий установщика уже запущена.', '', MB_OK or MB_ICONINFORMATION, 0, 0); Abort; end; end; Function InitializeSetup(): Boolean; begin OneSetup(); Result := True; end; Минус в том, что другой установщик (от другого автора, например; тоже сделанный на инно), также будет приниматься за копию. з.з.ы. Ну а может это и плюс (нефиг несколько установщиков запускать). з.з.з.ы. Ах, да, чуть не забыл: в этом варианте используется AppId. И лучше сгенерировать свой, который будет уникальным. Иначе будет принимать остальные запущенные установщики за копию твоего. Или просто сделать директиву своего, если уже имеется. Edited December 7, 2014 by Kotyarko_O @ Quote Link to comment Short link Share on other sites More sharing options...
Ekspoint Posted December 7, 2014 Share Posted December 7, 2014 Я ничего не понял. ShowMessageEx.iss. И в файле локализации "SetupAppRunningError". з.ы. легче использовать такой способ: Procedure OneSetup(); begin If FindWindowByClassName('TWizardForm') <> 0 then begin MsgBoxEx(0, 'Одна из копий установщика уже запущена.', '', MB_OK or MB_ICONINFORMATION, 0, 0); Abort; end; end; Function InitializeSetup(): Boolean; begin OneSetup(); Result := True; end; Минус в том, что другой установщик (от другого автора, например; тоже сделанный на инно), также будет приниматься за копию. з.з.ы. Ну а может это и плюс (нефиг несколько установщиков запускать). з.з.з.ы. Ах, да, чуть не забыл: в этом варианте используется AppId. И лучше сгенерировать свой, который будет уникальным. Иначе будет принимать остальные запущенные установщики за копию твоего. Или просто сделать директиву своего, если уже имеется. понял спасибо как думаете стоит этот код добавлять или не надо? [Setup] AppName=My Application AppVersion=1.5 DefaultDirName={pf}\My Application AppId=wwwwwwwwwwwwww [code] function UninstallMyApp(): Boolean; var Buff: String; i: Integer; begin Result := not RegQueryStringValue( HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1', 'UninstallString', Buff ); if not Result then Result := not FileExists(RemoveQuotes(Buff)); if not Result then if MsgBox('Перед установкой необходимо удалить предыдущую версию приложения. Продолжить?', mbError, MB_YESNO) = IDYES then try Exec(RemoveQuotes(Buff), '', ExtractFilePath(RemoveQuotes(Buff)), SW_SHOW, ewWaitUntilTerminated, i); finally Result := not RegQueryStringValue( HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1', 'UninstallString', Buff ); if not Result then MsgBox('Удаление завершилось неудачей, бывай!', mbError, MB_OK); end; end; function InitializeSetup(): Boolean; begin Result := UninstallMyApp(); end; @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted December 7, 2014 Share Posted December 7, 2014 как думаете стоит этот код добавлять или не надо? Если считаешь нужным. @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.