如何建立子进程 我现在正在用vc编一个程序,这个程序要调用a.exe。但a.exe不能通过::CreatProcess来调用,必须是先调用cmd.exe,然后在命令提示符里输入a.exe回车才能运行。 我该怎样做才能调用a.exe呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 WinExec("cmd.exe \k a.exe",SW_SHOW); 大虾。不行啊。 我继续向你请教。具体情况是这样的:现在我的程序要调用MySQL的备份工具来对MySQL数据库进行备份。不知你使用过MySQL没有,MySQL的备份工具mysqldump是一个控制台程序,双击它并不能打开它的界面。在运行对话框输入备份命令也不行,必须要在cmd下输入命令运行才行。开始我以为通过CreatProcess函数可以调用mysqldump.我的代码是这样的:STARTUPINFO si;PROCESS_INFORMATION pi;si.cb=sizeof(STARTUPINFO);si.lpReserved=NULL;si.lpDeaktop=NULL;si.lpTitle=NULL;si.dwFlags=STARTF_USESHOWWINDOW;si.wShowWindow=SW_SHOW;si.cbReserved2=0;si.lpReserved2=NULL;CString strProcess;strProcess.Format("mysqldump --user=root --password=828707 stu>E:\\114.dmp");::CreatProcess(NULL,(lpstr)(LPCTSTR)strProcess,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);上面mysqldump --user=root --password=828707 stu>E:\\114.dmp是mysql的备份命令,功能是对数据库stu进行备份,生成备份文件E:\114.dmp.程序运行没有出错,但是结果并没有生成备份文件114.dmp。如果先在运行对话框里输入cmd,弹出cmd的界面,然后输入mysqldump --user=root --password=123456 stu>E:\114.dmp这样就能生成备份文件114.dmp。之前我已经发过贴问过这个问题。一位碰过这个问题的高手说这个问题我也碰到过,应该是mysql的重定向和管道有点问题,分了两步解决的。 我照你上面所说的把代码改为:WinExec("cmd.exe \\k mysqldump --user=root --password=828707 stu>E:\\114.dmp",SW_SHOW); 结果是弹出一个cmd的界面,上面是E:\. 相当sorry.是 WinExec("cmd.exe /k a.exe",SW_SHOW);呵呵/k后面的可用 " "引起来 这里的a.exe后面可以添加参数吗? WinExec("cmd /k \"mysqldump --user=root --password=828707 stu>E:\\114.dmp\"",SW_SHOW); 为什么不能用CreateProcess呢?WinExec只是为了向16位兼容才保留的API,所以尽量不要用。Windows在内部创建进程的方式就是CreateProcess,不论你是双击图标也好,还是在命令行输入也好,都调用这个函数 WinExec("cmd /k \"mysqldump --user=root --password=828707 stu>E:\\114.dmp\"",SW_SHOW); 是对的。 我至今没搞懂为何不能用CreateProcess。我估计这是MySQL的问题。 ShellExecuteEx是判断ShellExecute是否运行成功的,肯定不行。 楼上的,ShellExecuteEx函数是ShellExecute的扩展,不是判断是否成功的况且Shell调用在内部也是调用CreateProcess的楼主可以说说为什么不能调用那个函数,出了什么错误?用GetLastError看看错误的值是什么东西 你把CreateProcess的参数看看仔细;另外,用CreateProcess也不要重定向了,自己创建管道接收命令行输出再存成文件。 strProcess.Format("cmd \k /"mysqldump --user=root --password=828707 stu>E:\\114.dmp/"");::CreatProcess(NULL,(LPSTR)(LPCTSTR)strProcess,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi); 这样也是可以的。 关于对话框最大化问题 insert into错误 各位大虾,小弟求《算法导论》电子书 请教高手几个简单C++问题. 如何在MFC建立的project中,添加在Win32 Console Application下写的类 CDataGrid 中函数SetRow()疑问! 关于处理消息的小问题 联合开发 谁有键盘钩子的完整源代码?(最好有说明和例子) 怎样截取别的应用程序里选取的文本? 这个问题怎么问呢? ^0^进来..进来..散分题
现在我的程序要调用MySQL的备份工具来对MySQL数据库进行备份。不知你使用过MySQL没有,MySQL的备份工具mysqldump是一个控制台程序,双击它并不能打开它的界面。在运行对话框输入备份命令也不行,必须要在cmd下输入命令运行才行。开始我以为通过CreatProcess函数可以调用mysqldump.我的代码是这样的:STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb=sizeof(STARTUPINFO);
si.lpReserved=NULL;
si.lpDeaktop=NULL;
si.lpTitle=NULL;
si.dwFlags=STARTF_USESHOWWINDOW;
si.wShowWindow=SW_SHOW;
si.cbReserved2=0;
si.lpReserved2=NULL;
CString strProcess;
strProcess.Format("mysqldump --user=root --password=828707 stu>E:\\114.dmp");::CreatProcess(NULL,(lpstr)(LPCTSTR)strProcess,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);上面mysqldump --user=root --password=828707 stu>E:\\114.dmp是mysql的备份命令,功能是对数据库stu进行备份,生成备份文件E:\114.dmp.程序运行没有出错,但是结果并没有生成备份文件114.dmp。如果先在运行对话框里输入cmd,弹出cmd的界面,然后输入mysqldump --user=root --password=123456 stu>E:\114.dmp这样就能生成备份文件114.dmp。之前我已经发过贴问过这个问题。一位碰过这个问题的高手说这个问题我也碰到过,应该是mysql的重定向和管道有点问题,分了两步解决的。 我照你上面所说的把代码改为:
WinExec("cmd.exe \\k mysqldump --user=root --password=828707 stu>E:\\114.dmp",SW_SHOW); 结果是弹出一个cmd的界面,上面是E:\.
是 WinExec("cmd.exe /k a.exe",SW_SHOW);呵呵/k后面的可用 " "引起来
我至今没搞懂为何不能用CreateProcess。我估计这是MySQL的问题。