一个简单的例子,批处理B可调用A,但我想在程序调用A,请问怎样在程序中传递参数 ?A.bat:
if "%1" == "" exit
echo QQB.bat
call a.bat 1
pause我试过用 ShellExecute(Handle,'open','D:\GRUBBG\A.bat','1',nil,SW_SHOW); WinExec('D:\GRUBBG\A.bat 1',SW_SHOWDEFAULT);但都调用不成功!
if "%1" == "" exit
echo QQB.bat
call a.bat 1
pause我试过用 ShellExecute(Handle,'open','D:\GRUBBG\A.bat','1',nil,SW_SHOW); WinExec('D:\GRUBBG\A.bat 1',SW_SHOWDEFAULT);但都调用不成功!
if "%1" == "" exit
echo QQ
pause然后楼主分别试一下效果:
ShellExecute(0,'open','a.bat','2','c:\', SW_ShowNormal);//不执行exit
ShellExecute(0,'open','a.bat','','c:\', SW_ShowNormal);//直接exit
附:参考资料如下: HINSTANCE ShellExecute(
HWND hwnd, //运行的窗口句拼
LPCTSTR lpOperation, // 运行方式
LPCTSTR lpFile, // 文件及路径
LPCTSTR lpParameters, // 参数(一般程序没有)
LPCTSTR lpDirectory, // 默认搜索路径
INT nShowCmd // 当程序运行后的显示方式
)
1、如果lpFile是一个可执行文件则ShellExecute直接执行它;如果lpFile是一个数据文件,则ShellExecute首先在注册表中查找和这种类型数据文件相关练的可执行文件,如果找到则执行这个可执行文件,否则启动失败,函数返回值为ERROR_FILE_NOT_FOUND
2、lpParameters是参数,如果lpFile是EXE文件,则参数有用,否则没用。
3、lpDirectory搜索路经可以不指定。
4、lpOperation是打开方式,可以为
"open",lpFile必须是一个文件
"explorer", lpFile必须是一个文件夹
"print"三中类型,lpFile必须是一个文件
CmdShow Long,为窗口指定可视性方面的一个命令。请用下述任何一个常数
SW_HIDE 隐藏窗口,活动状态给令一个窗口
SW_MINIMIZE 最小化窗口,活动状态给令一个窗口
SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态
SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态
SW_SHOWMAXIMIZED 最大化窗口,并将其激活
SW_SHOWMINIMIZED 最小化窗口,并将其激活
SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口
SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口
SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口
SW_SHOWNORMAL 与SW_RESTORE相同