Войти

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 [175] 176 177 178 179 180 181 182 183 184 185 186 187 188

El Sanchez
13-10-2011, 14:55
Там еще драйвер нужен, поэтому первый вариант не прокатывает. Нужна установка »
Gugle, да, нужен. Устанавливаю драйвер вручную - dll-ка интерфейсы не выдает. Пробуйте так:


[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program

[Files]
Source: ifList.dll; Flags: dontcopy

[Code]
const
SERVICE_QUERY_CONFIG = $1;
SC_MANAGER_ALL_ACCESS = $f003f;

type
mas = record
num: Integer;
name,IPv4,IPv6,description: PAnsiChar;
end;
HANDLE = Cardinal;

function getT(): Integer; external 'getT@files:ifList.dll stdcall delayload';
function getV(d: Integer): mas; external 'getV@files:ifList.dll stdcall delayload';

function OpenSCManager(lpMachineName, lpDatabaseName: String; dwDesiredAccess: Cardinal): HANDLE;
external 'OpenSCManagerA@advapi32.dll stdcall';

function OpenService(hSCManager: HANDLE; lpServiceName: String; dwDesiredAccess: Cardinal): HANDLE;
external 'OpenServiceA@advapi32.dll stdcall';

function CloseServiceHandle(hSCObject: HANDLE): Boolean;
external 'CloseServiceHandle@advapi32.dll stdcall';


function OpenServiceManager(): HANDLE;
begin
Result := OpenSCManager('', 'ServicesActive', SC_MANAGER_ALL_ACCESS);
end;

function IsServiceInstalled(ServiceName: String): Boolean;
var
hSCM: HANDLE;
hService: HANDLE;
begin
hSCM := OpenServiceManager();
if hSCM <> 0 then
begin
hService := OpenService(hSCM, ServiceName, SERVICE_QUERY_CONFIG);
if hService <> 0 then
begin
Result := hService <> 0;
CloseServiceHandle(hService);
end;
CloseServiceHandle(hSCM);
end;
end;

function InitializeSetup(): Boolean;
begin
Result := IsServiceInstalled('npf');
if not Result then MsgBox('Установите WinPcap.', mbError, MB_OK);
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var
m: mas;
i: Byte;
begin
Result := True;
if CurPageID = wpWelcome then
begin
for i := 1 to getT() do
begin
m := getV(i);
MsgBox('num= ' + IntToStr(m.num) + #13#10
+ 'name= ' + String(m.name) + #13#10
+ 'IPv4= ' + String(m.IPv4) + #13#10
+ 'IPv6= ' + String(m.IPv6) + #13#10
+ 'description= ' + string(m.description) + #13#10
, mbInformation, MB_OK);
end;
end;
end;

Gugle
13-10-2011, 15:41
Как при определении позиции в строке сказать, что бы искал спец символы?
Например:
int i := Pos(''', str); // Символ верхняя кавычка

Родилось еще 2 вопроса.
Как включить горизонтальный скролинг у CheckListBox?
Как сделать, что бы одна из папок, которая входит в дистр, копировалась в том случае, если локальная переменная = 1 и не копировалась, если эта переменная = 2?

Damaks
14-10-2011, 11:46
День добрый. Не получается сделать работающее выпадающее меню для выбора нужного пункта.


var
Change: Integer;

procedure CustomizeChange;
begin
if not ..... then
begin
..........;
Change := CustomizePage_ChangeCombo.ItemIndex;
..........;
end;
end;

function GetChange(Param : String) : String;
var
i, k: Integer;
begin
k := 2;
Result := '';
case Change of
begin
1 : Result := '.....';
..........;
for i := 1 to ..... do
begin
..........;
if ..... then
begin
if ..... then
k : Result := .....;
k := k+1;
end;
end;
end;
end;

procedure CreateTheWizardPages;
var
ChangeCombo: TNewComboBox;
i: Integer;
begin
CustomizePage := CreateCustomPage(wpSelectDir, 'Страница', 'Страница');
ChangeCombo := TNewComboBox.Create(CustomizePage);
ChangeCombo.Top := ScaleY(3);
ChangeCombo.Left := ScaleX(50);
ChangeCombo.Width := ScaleX(200);
ChangeCombo.Style := csDropDownList;
ChangeCombo.Parent := CustomizePage.Surface;
ChangeCombo.Items.Add('.....');
begin
..........;
..........;
for i := 1 to ..... do
begin
..........;
if ..... then
begin
if ..... then
ChangeCombo.Items.Add(.....)
end;
end;
end;
ChangeCombo.ItemIndex := 0;
CustomizePage_ChangeCombo := ChangeCombo;
end;

Постарался убрать всё лишнее, чтобы осталась только нужная структура, мог сделать опечатку. Общий смысл кода таков. В выпадающем меню должно быть определённое количество пунктов, на каждом компьютере разное. Значение и количество генерируется с помощью цикла "for i := 1 to ..... do". Значение строковое. С выбранным значением потом проводятся другие манипуляции.

На данный момент у меня проблема в функции GetChange, а конкретно синтаксическая ошибка в строке 22 "1 : Result := '.....';". Общая конструкция должна быть правильной. Само меню создаётся правильно.

El Sanchez
14-10-2011, 16:32
Символ верхняя кавычка »
Gugle, удвоить кавычку, т.е. первый аргумент Pos будет 4 кавычки.
Как включить горизонтальный скролинг у CheckListBox? »
Gugle, хоть у ListBox-ов есть стиль горизонтального скролла врубить пока не удалось.
Как сделать, что бы одна из папок, которая входит в дистр, копировалась в том случае, если локальная переменная = 1 и не копировалась, если эта переменная = 2? »
Gugle, нужен пример.
проблема в функции GetChange »
Damaks, конструкция case не начинается с begin и должна выглядеть, например, так:

case Param of
0: Result := '0';
1: Result := '1';
2: begin //несколько команд заключаем в begin-end
команда 1
команда 2 и т.д.
Result := '2';
end;
3: Result := '3';
else
Result := 'nothing'; //если Param не равен 0,1,2,3.
end;

Dark_Delphin
14-10-2011, 17:43
Всем привет)

Подскажите пожалуйста как исправить вот это:

Первая страница нормально..

http://i29.fastpic.ru/big/2011/1014/8b/e779b4f0d306014876ab9939faf5298b.png


А вторая вот позначил знаками вопросами.

http://i29.fastpic.ru/big/2011/1014/da/f8719c61640a2bde72c3a0d86932d0da.png

Нужно что-бы картинка закрыла чорный фон, а не фон картинку.


Заранее спасибо.

insombia
14-10-2011, 18:08
ntrx нужно скрипт смотреть здесь экстрасенсов нету

Вас приветствует R.G.Trend игры F1 2011
Как то не очень красиво,проще написать Вас приветствует R.G.Trend

Dark_Delphin
14-10-2011, 19:34
Кто может помочь сделать картинку на всех страницах?

Перемучался и не получается..

Заранее спасибо.

Tixo
14-10-2011, 19:46
ntrx,
скинь скрипт посмотрю

valyok666
14-10-2011, 21:41
ntrx, скорее всего неправильно указан размер в коде Растяжки изображения

valyok666
14-10-2011, 23:07
ntrx, ты имеешь ввиду на всех страницах разная или одна?

Dark_Delphin
14-10-2011, 23:31
valyok666, мне всё ровно как, но что-бы на всех страницах, поможеш?

Rikill
14-10-2011, 23:55
Надо организовать секту гадальщиков. Кручу верчууууууу! :wizard:
R.i.m.s.k.y., не мог бы одолжить хрустальный шар? Мой разбился. :cry:

VASYAKRN
15-10-2011, 10:05
Как создать тень для текста http://s017.radikal.ru/i400/1110/72/e3c2fce84401.jpg

VASYAKRN
15-10-2011, 10:23
ntrx, Изображение через ботву наносил
Если да то дай ету часть
mgLoad(WizardForm.Handle,ExpandConstant('{tmp}\I2.jpg'),ScaleX(49), ScaleY(20),ScaleX(530), ScaleY(313),false,True);

insombia
15-10-2011, 11:21
Как создать тень для текста »
В фотошопе

VASYAKRN
15-10-2011, 11:56
insombia, А через лейби никак

VASYAKRN
15-10-2011, 12:17
как убрать етот остаток текста из кнопки папки http://s46.radikal.ru/i111/1110/30/429d18c1e9c8.jpg

insombia
15-10-2011, 12:21
VASYAKRN научись правильно писать! там я заметил что при наведении курсора на ту область оно все стает нормально

Dark_Delphin
15-10-2011, 13:04
Всем добрый день!

У кого есть пример скрипта добавления страници компоннетов, комноненты запакованы у АРК архивы.

Заранее спасибо.

insombia
15-10-2011, 13:42
ntrx скачай любой isdone там есть пример




© OSzone.net 2001-2012