Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для YURSHAT

Старожил


Сообщения: 163
Благодарности: 78

Профиль | Отправить PM | Цитировать


Цитата TROY Diamond:
А на обычной версии НЕТ способа... »
Есть конечно, используйте InnoCallback.dll.
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.
ExtraDiskSpaceRequired=536870912000
Compression=lzma2/ultra64
InternalCompressLevel=ultra64
SolidCompression=yes

[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl

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

[ Code]
type
  TimerProc = procedure(Sender: TObject);

const
  BM_CLICK = $00F5;

function FindWindowEx(Parent, Child: Longint; ClassName, WindowName: PChar): Longint; external 'FindWindowExA@user32.dll stdcall';
function CallbackAddr(Callback: TimerProc; ParamCount: Integer): LongWord; external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): LongWord; external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@user32.dll stdcall';

procedure Timer(Sender: TObject);
var
  hWnd: Longint;
begin
  hWnd := FindWindowByWindowName(SetupMessage(msgDiskSpaceWarningTitle)); // ищем сообщение о нехватке места
  if hWnd > 0 then // если нашли
    PostMessage(FindWindowEx(hWnd, 0, 'Button', PChar(SetupMessage(msgButtonYes))), BM_CLICK, 0, 0);  // нажимаем на кнопку
end;

procedure InitializeWizard;
begin
  SetTimer(WizardForm.Handle, 1, 5 {задаём интервал}, CallbackAddr(@Timer, 0));
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpSelectDir then
    KillTimer(WizardForm.Handle, 0);
end;

-------
Если я знаю, что знаю мало, я добьюсь того, чтобы знать больше... В.И. Ленин
Krinkels.org - сжатие данных и создание инсталляторов

Это сообщение посчитали полезным следующие участники:

Отправлено: 03:54, 20-01-2012 | #657