请问mush中如何用简单方法实现zmud中的#mess?
本帖最后由 purbam 于 2015-1-7 06:12 PM 编辑因为不方便使用声音,所以希望实现弹窗,并且是在mush最小化时仍然能够弹出
zmud中可以使用#mess,mush中也找到个类似的lua自带函数utils.msgbox,不过似乎限制在mush窗口内,不能在mush最小化时弹出到桌面。 回复 1# purbam
呃(⊙o⊙)…
标准MUSH命令里好像没太有这么人性化的设定?(我不太了解……)
这里提供一个不那么原生的方法,利用MUSH的os.execute()函数,执行DOS指令,用弹出的cmd控制台窗口进行提示,具体代码是:
os.execute("echo 密信来了!&pause") 楼主刚发这个帖子的时候我就看到了,只是刚刚才想到解决方案。。
感谢楼主,让我在思考这个问题的时候想通了另一件困扰自己很久的事情,关于未来有了一个新的决定^_^ 回复purbam
呃(⊙o⊙)…
标准MUSH命令里好像没太有这么人性化的设定?(我不太了解……)
...
cappuccino 发表于 2015-1-7 07:03 PM http://pkuxkx.com/forum/images/common/back.gif
看来还是要用系统命令,不过我没想到利用dos窗口,这样就简单多了,差点去研究脚本的gui kit..
太感谢了{:7_277:} MUSH系统发声可参考如下代码:只能是英文。
require "luacom"
talk=luacom.CreateObject("SAPI.Spvoice")
function speak(str)
talk:speak(str);return
end
speak("Master has gaven you a letter!")
umsgbox 本帖最后由 supertu 于 2015-2-23 02:07 PM 编辑
无论通过LUA对COM或者DLL调用系统的MessageBox函数,都能实现最小化窗口后的弹窗。
只是过程要稍微麻烦点,需要用到COM封装知识或者遵循LUA对DLL调用Cfunction的规范。
下面以DLL调用为例:
int msgbox(lua_State* L)
{
const char* message = luaL_checkstring(L, 1);
const char* caption = luaL_optstring(L, 2, "");
int result = MessageBox(NULL, message, caption, MB_OK);
lua_pushnumber(L, result);
return 1;
}
很明显看出是调用了系统自带的MessageBox的函数。
测试环境为 WIN7 64bit + Mushclient4.94 + GNU GCC 恩,我现在用Perl,perl里面直接通过Win32::MsgBox模块调用系统messagebox还是挺方便的
use Win32;
sub MyNote {
my $msg = "$_";
Win32::MsgBox("$msg",0x40000,"Warn");
}
0x40000就是让messagebox总在最前 条条道路通罗马。 问题来了,js里面应该如何搞呢?
页:
[1]
2