Друзья добавить время «кнопку Далее или Установить», чтобы выпустили на странице «Ready»Inno Setup добавить релиз времени на кнопку
15 второй 15,14,13,12,11,10,9 , 8,7,6,5,4 время после отпускания кнопки нажать пример
Друзья добавить время «кнопку Далее или Установить», чтобы выпустили на странице «Ready»Inno Setup добавить релиз времени на кнопку
15 второй 15,14,13,12,11,10,9 , 8,7,6,5,4 время после отпускания кнопки нажать пример
Поскольку нет встроенного таймера в InnoSetup в это время, вы должны будете использовать Windows, API для этого. Кроме того, функция, которая будет использоваться здесь, нуждается в функции обратного вызова, которая должна быть завернута, например, InnoCallback
, используемой следующим скриптом.
Показывает, как отключить следующую кнопку на странице выбора каталога в течение 5 секунд, но вы можете просто изменить параметр функции DisableNextButton
, который представляет собой интервал в секундах для значения, которое вы хотите, а также можете изменить для какой страницы вы будете использовать его. Существует также значение оставшегося времени в следующей надписи кнопки:
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
[Files]
Source: "InnoCallback.dll"; DestDir: "{tmp}"; Flags: dontcopy
[Code]
var
Counter: Integer;
TimerID: Integer;
type
TTimerProc = procedure(Wnd: HWND; Msg: UINT; TimerID: UINT_PTR;
SysTime: DWORD);
function WrapTimerProc(Callback: TTimerProc; ParamCount: Integer): LongWord;
external '[email protected]:InnoCallback.dll stdcall';
function SetTimer(hWnd: HWND; nIDEvent, uElapse: UINT;
lpTimerFunc: UINT): UINT; external '[email protected] stdcall';
function KillTimer(hWnd: HWND; uIDEvent: UINT): BOOL;
external '[email protected] stdcall';
procedure OnTimerTick(Wnd: HWND; Msg: UINT; TimerID: UINT_PTR;
SysTime: DWORD);
begin
Counter := Counter - 1;
if Counter <= 0 then
begin
WizardForm.NextButton.Enabled := True;
WizardForm.NextButton.Caption := SetupMessage(msgButtonNext);
if TimerID <> 0 then
KillTimer(0, TimerID);
end
else
WizardForm.NextButton.Caption := SetupMessage(msgButtonNext) +
IntToStr(Counter);
end;
procedure DisableNextButton(Timeout: Integer);
var
TimerCallback: LongWord;
begin
Counter := Timeout;
WizardForm.NextButton.Enabled := False;
WizardForm.NextButton.Caption := SetupMessage(msgButtonNext) +
IntToStr(Counter);
TimerCallback := WrapTimerProc(@OnTimerTick, 4);
TimerID := SetTimer(0, 0, 1000, TimerCallback);
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpSelectDir then
DisableNextButton(5);
end;
Вот скриншот:
Perfect TLama это же Но вы можете поместить счетчик времени с изображением изображения , пока кнопка отключена – Marcio
Я просил вас уточнить. Вы ответили * отключили его на 15 секунд *, поэтому не удивляйтесь :-) Ну, я обновил ответ, который теперь показывает скрипт, который будет иметь оставшийся счетчик секунд (времени до следующей кнопки включено) в следующей надписи кнопки. Надеюсь, у меня это получилось на этот раз ... – TLama
TLama благодарит за помощь и терпение «разрешено». именно то, что я хотел использовать переводчик Google, очень сложно снова спасибо – Marcio
Не могли бы вы уточнить ваш вопрос, пожалуйста? Это действительно сложно, о чем вы просите. Вы хотите отключить следующую кнопку и включить ее через 15 секунд? Если да, то когда? На странице мастера или где-то еще? Или что-то другое ? – TLama
TLama отключает его на 15 секунд – Marcio
Этот вопрос имеет отношение к моей проблеме, и принятый ответ - именно то, что я искал, поэтому я попросил, чтобы вопрос был вновь открыт, поскольку он достаточно ясен и очень полезен, как есть. –