有没有办法在指定的时间内显示一个消息框(这意味着,当指定的时间过去时,消息框将自动关闭)?
答案 0 :(得分:11)
Windows API具有在指定时间内显示消息框的功能,但由于某种原因,该功能未记录,这意味着它没有得到官方支持,可能会有所变化。
该函数被称为MessageBoxTimeout
,它甚至在user32.dll
库中导出,这让我觉得这个函数唯一缺少的是官方文档。但谁知道......
以下脚本显示如何在显示向导表单之前显示消息框5秒钟。如果用户没有单击“确定”按钮,也没有手动关闭窗口,则在5秒钟过后,消息框将自动关闭:
[Code]
#ifdef UNICODE
#define AW "W"
#else
#define AW "A"
#endif
const
MB_TIMEDOUT = 32000;
MB_ICONERROR = $10;
MB_ICONQUESTION = $20;
MB_ICONWARNING = $30;
MB_ICONINFORMATION = $40;
function MessageBoxTimeout(hWnd: HWND; lpText: string; lpCaption: string;
uType: UINT; wLanguageId: Word; dwMilliseconds: DWORD): Integer;
external 'MessageBoxTimeout{#AW}@user32.dll stdcall';
procedure InitializeWizard;
begin
MessageBoxTimeout(WizardForm.Handle, 'This message will be automatically ' +
'closed in 5 seconds!', 'Caption...', MB_OK or MB_ICONINFORMATION, 0, 5000);
end;
有关参数和结果值的更多信息,请参阅MessageBox
函数帮助站点和一些描述MessageBoxTimeout
函数本身的非官方文章,例如:
答案 1 :(得分:0)
如果您想要一个比@TLama's answer允许的MessageBoxTimeout
更自定义的实施方式(如倒计时显示或自定义按钮字幕):
CreateCustomForm
; 有关完整代码,请参阅MsgBox - Make unclickable OK Button and change to countdown - Inno Setup。