sergey3695, спасибо, но только-что смог таки скрыть тултипы (ведь знал же что библиотека в этом случае - перебор)
пихать в библиотеку это явно нет смысла:
Код:

function HideSystemTooltip(Wnd: HWND; lPrm: LPARAM): BOOL;
begin
Result := ShowWindow(FindWindowByClassName('#32774'), SW_HIDE);
end;
полный пример:
читать дальше »
Код:

[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp
[Files]
Source: {fonts}\*; DestDir: {app}; Flags: external
Source: steam.cjstyles; Flags: dontcopy
Source: isskin.dll; Flags: dontcopy
[ code]
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif
const
GWL_WNDPROC = -4;
WM_NCMOUSEMOVE = $00A0;
type
LPARAM = Integer;
WPARAM = Integer;
LRESULT = Integer;
TFNWndProc = Integer;
SHORT = Longint;
var
OldWindowProc: Longint;
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall';
function CallWindowProc(lpPrevWndFunc: TFNWndProc; hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; external 'CallWindowProc{#A}@user32.dll stdcall';
function EnumWindows(lpEnumFunc, lParam: Longint): BOOL; external 'EnumWindows@user32.dll stdcall';
function ShowWindow(hWnd: HWND; nCmdShow: Integer): BOOL; external 'ShowWindow@user32.dll stdcall';
function HideSystemTooltip(Wnd: HWND; lPrm: LPARAM): BOOL;
begin
Result := ShowWindow(FindWindowByClassName('#32774'), SW_HIDE);
end;
function WindowProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT;
begin
if Msg = WM_NCMOUSEMOVE then EnumWindows(CallbackAddr('HideSystemTooltip'), 0);
Result := CallWindowProc(OldWindowProc, hWnd, Msg, wParam, lParam);
end;
procedure InitializeWizard();
begin
OldWindowProc := SetWindowLong(WizardForm.Handle, GWL_WNDPROC, CallbackAddr('WindowProc'));
end;
procedure DeinitializeSetup();
begin
SetWindowlong(WizardForm.Handle, GWL_WNDPROC, OldWindowProc);
end;
касательно сокрытия кнопки развернуть:
Mailchik, Спасибо большое за код. Знаю что стиль "Аэро" слетает, но не важно тк хотел использовать только со скином, но кнопка не текстурируется

, поэтому
Mailchik,
sergey3695, предлагаю доработанный метод подмены сообщений:
сис меню больше не вызывается при клике по иконке и за неё теперь можно таскать, + в том что сворачивание происходит при клике а не нажатии на кнопку:
читать дальше »
Код:

[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp
[Files]
Source: {fonts}\*; DestDir: {app}; Flags: external
[ code]
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif
const
GWL_WNDPROC = -4;
WM_SYSCOMMAND = $0112;
SC_MINIMIZE = 61472;
SC_MAXIMIZE = 61488;
SC_SIZE = 61440;
SC_MOVE = 61456;
WM_NCLBUTTONDBLCLK = $00A3;
MF_BYCOMMAND = 0;
WM_NCLBUTTONDOWN = $00A1;
WM_NCRBUTTONDOWN = $00A4;
WM_NCMOUSEMOVE = $00A0;
SC_CLOSE = 61536;
VK_LBUTTON = 1;
SC_DRAGMOVE = $F012;
WM_JOHNY = 7777;
type
LPARAM = Integer;
WPARAM = Integer;
LRESULT = Integer;
TFNWndProc = Integer;
SHORT = Longint;
var
OldWindowProc: Longint;
SysPopupMenu: TPopupMenu;
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall';
function CallWindowProc(lpPrevWndFunc: TFNWndProc; hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; external 'CallWindowProc{#A}@user32.dll stdcall';
function GetCursorPos(var lpPoint: TPoint): BOOL; external 'GetCursorPos@user32.dll stdcall';
function GetWindowRect(hWnd: HWND; var lpRect: TRect): BOOL; external 'GetWindowRect@user32.dll stdcall';
function GetKeyState(nVirtKey: Integer): SHORT; external 'GetKeyState@user32.dll stdcall';
function ReleaseCapture: BOOL; external 'ReleaseCapture@user32.dll stdcall';
function EnumWindows(lpEnumFunc, lParam: Longint): BOOL; external 'EnumWindows@user32.dll stdcall';
function ShowWindow(hWnd: HWND; nCmdShow: Integer): BOOL; external 'ShowWindow@user32.dll stdcall';
function HideSystemTooltip(Wnd: HWND; lPrm: LPARAM): BOOL;
begin
Result := ShowWindow(FindWindowByClassName('#32774'), SW_HIDE);
end;
function WindowProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT;
var
pt: TPoint;
rt: TRect;
begin
case Msg of
WM_SYSCOMMAND:
case wParam of
SC_MAXIMIZE:
begin
wParam := 0;
SendMessage(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
end;
end;
WM_NCMOUSEMOVE: EnumWindows(CallbackAddr('HideSystemTooltip'), 0);
WM_NCLBUTTONDBLCLK: Msg := 0; // двойной клик по заголовку окна
WM_NCRBUTTONDOWN:
begin
Msg := 0;
if GetCursorPos(pt) then SysPopupMenu.Popup(pt.x, pt.y);
end;
WM_NCLBUTTONDOWN: if GetCursorPos(pt) and GetWindowRect(hWnd, rt) then
if (pt.x > rt.Left) and (pt.x < rt.Right-WizardForm.Width+27) and (pt.y > rt.Top) and (pt.y < rt.Bottom-WizardForm.Height+27) then
begin
ReleaseCapture;
SendMessage(WizardForm.Handle, WM_SYSCOMMAND, SC_DRAGMOVE, 0);
end;
// WM_JOHNY: MsgBox('демо подмены кнопок от Johny777 :)', mbInformation, MB_OK);
end;
Result := CallWindowProc(OldWindowProc, hWnd, Msg, wParam, lParam);
end;
procedure SysMenuOnClick(Sender: TObject);
begin
case TMenuItem(Sender).Caption of
'MINIMIZE': SendMessage(WizardForm.Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
'CLOSE': SendMessage(WizardForm.Handle, WM_SYSCOMMAND, SC_CLOSE, 0);
'MOVE': SendMessage(WizardForm.Handle, WM_SYSCOMMAND, SC_MOVE, 0);
end;
end;
procedure InitializeWizard();
var
hSYSMENU: HWND;
mMinimize, mClose, mMove: TMenuItem;
begin
WizardForm.BorderIcons := [biSystemMenu, biMaximize];
OldWindowProc := SetWindowLong(WizardForm.Handle, GWL_WNDPROC, CallbackAddr('WindowProc'));
SysPopupMenu := TPopupMenu.Create(WizardForm);
with SysPopupMenu do
begin
mMinimize := TMenuItem.Create(WizardForm);
with mMinimize do
begin
Caption := 'MINIMIZE';
SysPopupMenu.Items.Add(mMinimize);
OnClick := @SysMenuOnClick;
end;
mClose := TMenuItem.Create(WizardForm);
with mClose do
begin
Caption := 'CLOSE';
SysPopupMenu.Items.Add(mClose);
OnClick := @SysMenuOnClick;
end;
mMove := TMenuItem.Create(WizardForm);
with mMove do
begin
Caption := 'MOVE';
SysPopupMenu.Items.Add(mMove);
OnClick := @SysMenuOnClick;
end;
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpWelcome then SendMessage(WizardForm.Handle, WM_JOHNY, 0, 0);
end;
procedure DeinitializeSetup();
begin
SetWindowlong(WizardForm.Handle, GWL_WNDPROC, OldWindowProc);
end;
в сообщении
sergey3695 есть перерисованный скин. Пробуйте.

Есть рекомендации по улучшению - говорите! По возможности исправлю/добавлю
Мне осталось только доработать подменённое сис меню и добавить свои хинты (можно и через ISHint.dll)
=============================================
UPDATE =========================================================
изучаю потихоньку вин апи, вот вам подарок:
читать дальше »
Код:

[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp
[ code]
const
FLASHW_STOP = $0;
FLASHW_CAPTION = $1;
FLASHW_TRAY = $2;
FLASHW_ALL = FLASHW_CAPTION or FLASHW_TRAY;
FLASHW_TIMER = $4;
FLASHW_TIMERNOFG = $C;
type
FLASHWINFO = record
cbSize: UINT;
hwnd: HWND;
dwFlags: DWORD;
uCount: UINT; // Число миганий
dwTimeout: DWORD; // промежуток между миганиями
end;
function FlashWindowEx(var pfwi: FLASHWINFO): BOOL; external 'FlashWindowEx@user32.dll stdcall';
procedure CurPageChanged(CurPageID: Integer);
var
fl: FLASHWINFO;
begin
fl.cbSize := SizeOf(fl);
fl.dwTimeout := 777;
fl.hwnd := Application.Handle;
fl.uCount := 3;
fl.dwFlags := FLASHW_TRAY;
FlashWindowEx(fl);
end;
