Inno setup 如何在运行时更改MsgBox消息标题?

Inno setup 如何在运行时更改MsgBox消息标题?,inno-setup,msgbox,Inno Setup,Msgbox,我需要在运行时更改MsgBox消息框的默认标题。当前,它不断显示SetupAppTitle指令的值作为标题: [Setup] SetupAppTitle=myAppName 但这是在编译时指定的。如何在运行时执行此操作,例如,从[code]部分执行此操作?我不认为更改应用程序标题(如果可能)只是为了显示对话框标题。因此,我会使用窗户,甚至是由用户使用的窗户。以下是Inno Setup的Ansi/Unicode版本的一个简单示例: [代码] 常数 MB_iError=$10; MB_i质询=20

我需要在运行时更改
MsgBox
消息框的默认标题。当前,它不断显示
SetupAppTitle
指令的值作为标题:

[Setup]
SetupAppTitle=myAppName

但这是在编译时指定的。如何在运行时执行此操作,例如,从
[code]
部分执行此操作?

我不认为更改应用程序标题(如果可能)只是为了显示对话框标题。因此,我会使用窗户,甚至是由用户使用的窗户。以下是Inno Setup的Ansi/Unicode版本的一个简单示例:

[代码]
常数
MB_iError=$10;
MB_i质询=20美元;
MB_ICONWARNING=30美元;
MB_Iconninformation=40美元;
#ifdef UNICODE
#定义AW“W”
#否则
#定义“A”
#恩迪夫
函数消息框(hWnd:hWnd;lpText,lpCaption:string;
uType:UINT):整数;外部“MessageBox{#AW}@user32.dll stdcall”;
程序按钮非点击(发送方:TObject);
开始
消息框(0,‘消息文本’、‘消息标题’、MB_OK或MB_图标信息);
结束;

我终于做到了:

[代码]
{ https://msdn.microsoft.com/en-us/library/windows/desktop/ms645505.aspx }
{将Windows MessageBox()函数用作MsgBox()替换项。}
{MessageBoxW是此API调用的UNICODE版本。}
常数
{这些不会在Inno安装程序中导出!}
MB_ICONERROR=$00000010;
MB_ICONWARNING=$00000030;
MB_Iconninformation=$00000040;
MB_iQuestion=$00000020;
函数_MessageBoxW(hWnd:Integer;lpText,lpCaption:String;uType:Cardinal):整数;
外部的MessageBoxW@user32.dllstdcall';
{用法:SysMsgBox('Error','Shit cours!',MB_OK或MB_ICONERROR);}
{res=:SysMsgBox('Question','blah blah',MB_YESNO或MB_ICONQUESTION);}
函数SysMsgBox(常量标题,消息:字符串;常量标志:整数):整数;
开始
结果:=
_MessageBoxW_908;(stroint(ExpandConstant({wizardhwnd}'))、消息、标题、标志);
结束;

谢谢大家的帮助

我是否应该使用MessageBoxW()@TLama,如果Unicode版本中有一个
PChar
,它实际上可能被定义为
PWideChar
(替换
PAnsiChar
)。也就是说,如果OP需要显示Unicode标题/消息(如果不需要,可以使用Ansi版本)。不过我无法测试它…@TLama,在这种情况下,我认为简单地将
PAnsiChar
更改为
string
就可以了;)@科比克,谢谢,你说得对,也许会成功。@GregoryKotsaftis,没有区别。很好的“用法”;)请确保您接受@TLama的正确答案。啊,我明白了,您缺少
MB_TASKMODAL
标志(
MB_TASKMODAL=$00002000;
)。有更多的标签,科比克选择了其中的几个。当然,当您设置了正确的窗口句柄时,当您试图从中设置焦点时,它会导致消息框闪烁。Java是完全独立的平台。但是无论如何,如果您指定
hWnd
或使用
MB_taskmodel
而不指定
hWnd
,唯一的区别是,在第一种情况下,当您尝试聚焦向导时,窗口将闪烁。在第二种情况下不会。这是因为所有权;-)这就是我的观点!感谢大家为我指明了正确的方向。但我还是必须快速解析inno的代码,以找到适合我需要的答案。。。(我投票支持我得到的任何帮助!)查看《泰晤士报》,@3月12日我已经解决了这个问题,但因为我是一个新手,所以直到一天过去,我才能发布我的答案。所以我不得不等待。。。我从未使用过TLama的解决方案,因为我已经有了一个(前几天我提供的)。