ExecDos让NSIS执行cmd程序去掉黑框隐藏黑框

/*
ExecDos让NSIS执行cmd程序去掉黑框隐藏黑框
ExecDos在执行控制台程序时创建一个隐藏IO的子进程.相对于nsExec插件ExecDos有一些自己的特点:
在执行时可以调用stdin标准输入进行消息通信,比如你要输入用户名和注册码之类的.
即可同步执行也可以异步执行进程.ExecDos不必在Section段时执行,你可以把它放到.onInit函数段里执行.
Execdos支持多线程的,意味着你可以在同时执行多个程序.
ASYNC:异步执行,不用等到程序执行完就可以执行下一步操作.
TIMEOUT:等待执行时间,以毫秒为单位.
TOSTACK:可以获取执行程序的输入信息日志.
DETAILED:将信息输出到DetailedView信息框里.
TOWINDOW:将信息附加到指定窗口制件,支持Edit,RichEdit,ListView和ListBox.
TOFUNC:将信息传递给函数,你可以自行处理消息内容.
DISABLEFSR:不允许64位系统的重定向.
ExecDos::wait:等待程序执行完毕.
ExecDos::isdone:获得进程执行状态,1程序执行完毕,0程序正在运行当中,-1程序出错了.要配合/ASYNC异步参数一起使用.
*/
!AddPluginDir "../../Plugins"
; Base definition
!define APP_NAME "ExecDos"
!define DOS_APP consApp.exe
; General Attributes
Name "${APP_NAME}永恒心锁"
OutFile "${APP_NAME}.exe"
; Interface Settings
!include "MUI2.nsh"
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "SimpChinese"
Function LogFunction
IntOp $1 $1 + 1
 Pop $0
 MessageBox MB_OK "$1:$0"
FunctionEnd
Section "永恒心锁"
 #异步执行,将信息输出到DetailedView信息框里,等待时间6秒,控制台程序,用户名和密码
 ExecDos::exec /NOUNLOAD /ASYNC /DETAILED /TIMEOUT=6000 "$EXEDIRconsApp.exe" "test_login$ntest_pwd$n"
 Pop $R9
 ExecDos::isdone /NOUNLOAD $R9
 Pop $R1
 DetailPrint "程序执行状态返回值isdone$R1"
 Sleep 3000
 ExecDos::isdone /NOUNLOAD $R9
 Pop $R1
 DetailPrint "暂停5秒后程序执行状态返回值isdone$R1"
 ExecDos::wait $R9
 Pop $R7
 DetailPrint "程序的退出返回值是:$R7"
 #将信息传递到函数中
 GetFunctionAddress $0 LogFunction
 ExecDos::exec /ASYNC /TOFUNC /TIMEOUT=5000 "$EXEDIRconsApp.exe" "test_login$ntest_pwd$n" $0
SectionEnd
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容