1. правильно ли портировал отсюда
2. действительно ли он хорош (работает уж точно, но вот реализация... В общем хотелось бы чтоб кто-нибудь знающий глянул)
Код:
Код: Выделить всё
[Setup]
AppName=DisksInfo
VersionInfoVersion=5.0
AppVerName=DisksInfo
DefaultDirName={pf}\My program
[ Code]
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif
const
QS_KEY = $0001;
QS_MOUSEMOVE = $0002;
QS_MOUSEBUTTON = $0004;
QS_POSTMESSAGE = $0008;
QS_TIMER = $0010;
QS_PAINT = $0020;
QS_SENDMESSAGE = $0040;
QS_HOTKEY = $0080;
QS_MOUSE = (QS_MOUSEMOVE or QS_MOUSEBUTTON);
QS_INPUT = (QS_MOUSE or QS_KEY);
QS_ALLEVENTS = (QS_INPUT or QS_POSTMESSAGE or QS_TIMER or QS_PAINT or QS_HOTKEY);
QS_ALLINPUT = (QS_INPUT or QS_POSTMESSAGE or QS_TIMER or QS_PAINT or QS_HOTKEY or QS_SENDMESSAGE);
STATUS_TIMEOUT = $00000102;
WAIT_TIMEOUT = STATUS_TIMEOUT;
function MsgWaitForMultipleObjects(nCount: DWORD; var pHandles: THandle; fWaitAll: BOOL; dwMilliseconds, dwWakeMask: DWORD): DWORD; external 'MsgWaitForMultipleObjects@user32.dll stdcall';
function CreateEvent(lpEventAttributes: Longint; bManualReset, bInitialState: BOOL; lpName: PChar): THandle; external 'CreateEvent{#A}@kernel32.dll stdcall';
function CloseHandle(hObject: THandle): BOOL; external 'CloseHandle@kernel32.dll stdcall';
function GetTickCount: DWORD; external 'GetTickCount@kernel32.dll stdcall';
procedure Delay(Milliseconds: Integer);
var
dwTick: DWORD;
hEvent: THandle;
begin
hEvent := CreateEvent(0, False, False, '');
try
dwTick := GetTickCount + DWORD(Milliseconds);
while (Milliseconds > 0) and (MsgWaitForMultipleObjects(1, hEvent, False, Milliseconds, QS_ALLINPUT) WAIT_TIMEOUT) do
begin
Application.ProcessMessages;
Milliseconds := dwTick - GetTickCount;
end;
finally
CloseHandle(hEvent);
end;
end;
procedure InitializeWizard;
begin
Delay(2000);
end;наперёд скажу, что обычный Sleep() не подходит, тк мне нужно задержать исчезновение формы на пару секунд, а с ним на ней всё замирает. Решение - код выше
===============================================================================
alert30,
Цитата alert30:
заголовок окна и отображает в панели задач
заголовок окна и имя кнопки в панели задач не взаимосвязаны , меняются отдельно друг от друга 3-мя способами:
1. путём изменения стандартных констант сообщений
Код:
Код: Выделить всё
[messages]
SetupAppTitle=имя кнопки
SetupWindowTitle=заголовок окна2. через методы объектов
Код:
Код: Выделить всё
procedure InitializeWizard();
begin
WizardForm.Caption := 'Заголовок окна';
Application.Title := 'Имя кнопки';
end;3. через функцию винды SetWindowText
Код:
Код: Выделить всё
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif
function SetWindowText(hWnd: HWND; lpString: String): BOOL; external 'SetWindowText{#A}@user32.dll stdcall';
procedure InitializeWizard();
begin
SetWindowText(WizardForm.Handle, 'Заголовок окна');
SetWindowText(Application.Handle, 'Имя кнопки');
end;