Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

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

Ветеран


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

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


Цитата Winstan:
как можно убрать стандартное сообщение переде удаление и после? »
Написал пример, для Restools, можно и для обычной, но там надо использовать InnoCallBack.dll...
Пример
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Code]
const
  BM_CLICK    = $00F5; // это обычный клик 
  WM_CLOSE    = $0010; // понятно из названия

// Осуществляет поиск дочернего окна
function FindWindowEx(Parent, Child: HWND; ClassName, WindowName: PChar): HWND;
  external 'FindWindowExA@user32.dll stdcall';

var
  Timer: TTimer;
  msg: string;
  Wnd, WndEx: HWND;
  count: Integer;
  
procedure OnTimer(Sender: TObject);
begin
  Wnd:= FindWindowByWindowName(msg); // ищем сообщение
  if Wnd > 0 then // если нашли
    if count = 1 then // если первое уже находили, то
      PostMessage(Wnd, WM_CLOSE, 0, 0) // просто закрываем
    else
    begin
      WndEx:= FindWindowEx(Wnd, 0,'Button', SetupMessage(msgButtonYes)); // ищем кнопку
      if WndEx > 0 then // если нашли
        begin
          PostMessage(WndEx, BM_CLICK, 0, 0); // нажимаем кнопку
          count:= 1; // указываем что первое сообщение уже нашли
          Timer.Enabled:= False; // отключаем таймер
        end;
    end;
end;

function InitializeUninstall(): Boolean;
begin
  Result:= True;

  // задаём переменной текст окна
  msg:= SetupMessage(msgUninstallAppFullTitle);
  StringChange(msg, '%1', '{#SetupSetting('AppName')}');

  Timer:= TTimer.Create(nil);
  with Timer do
    begin
      OnTimer:= @OnTimer;
      Interval:= 1;
      Enabled:= True;
    end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if CurUninstallStep = usPostUninstall then Timer.Enabled:= True; // включаем таймер ещё раз
end;

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.


Последний раз редактировалось Serega, 16-12-2009 в 23:34. Причина: исправил отображение скрипта...


Отправлено: 23:12, 16-12-2009 | #683