MessageBox() 函数超时参数 nTimeout 的是是非非
1. MessageBox() 函数在 VFP 7 时,增加了第四个超时参数;
=Messagebox("这里是提示文字,请不要回复。", 0, "标题名称", 2000)
&& 超时 2 秒则退出
2. 4096 : 系统模式
VFP 是非系统模式,当点击 MessageBox 窗口之外,该窗口就会跑到后面,所以加 4096 位移,成为系统模式,比如:
=Messagebox("这里是提示文字,请不要回复。", 0+4096, "标题名称", 2000)
&& 超时 2 秒则退出
3. WSH 是 MessageBox 的宿主
但在 VFP 9 + XP 中存在 Bug
VBS 脚本:(正确)
set WShell = CREATEOBJECT("WScript.Shell")
WShell.Popup "超时 2 秒则退出!", 2, "标题名称", 1
VFP 代码:(VFP 9 错误,VFP 6 也许行)
WShell = CREATEOBJECT("WScript.Shell")
WShell.Popup("超时 2 秒则退出!", 2, "标题名称", 1)
4. API 方式
VFP 6-9 支持:
Declare Integer WTSSendMessage In WtsApi32;
INTEGER hServer,;
LONG SessionId,;
STRING @pTitle,;
LONG TitleLength,;
STRING @pMessage,;
LONG MessageLength,;
LONG MsgStyle,;
LONG MsgTimeout,;
LONG @pResponse,;
INTEGER bWait
#Define WTS_CURRENT_SERVER_HANDLE 0
Local cTitle, cMsg, nResponse
cTitle = "标题名称"
cMsg = "这里是提示文字,请不要回复。"
nResponse = 0
hServer = 0
nTimeout = 3
&& 超时秒数
Clear
? WTSSendMessage(hServer, 1, ;
@cTitle, Len(cTitle), ;
@cMsg, Len(m.cMsg), 0, nTimeout, @nResponse, 1)