我的代码存在问题。 我想执行文件夹Utility中的命令行“convert.exe Capture.PNG Capture.bmp”。 所以我想为它创建一个流程。
STARTUPINFO si;
PROCESS_INFORMATION pi;
DWORD ExitCode;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
CString command="convert.exe "+CurrentDirectory()+"\\Utility\\Capture.PNG "+CurrentDirectory()+"\\Utility\\Capture.bmp >text.txt";
char test[1000];
memccpy(test,command,1,command.GetLength());
CString application=CurrentDirectory()+"\\Utility\\convert.exe";
if(CreateProcess(application, test,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL, &si, &pi))
{
WaitForSingleObject(&pi.hProcess,INFINITE);
printf("Yohoo!");
}
else
{
printf("The process could not be started...");
}
程序输入“if”但我没有位图。 我不知道如何在控制台中写入错误。它非常快地关闭。
我的代码在MFC C ++ Visual Studio 2012中...而且convert.exe是ImageMagick中没有安装的应用程序。
谢谢
答案 0 :(得分:0)
关于声明
CString command="convert.exe "
+ CurrentDirectory() + "\\Utility\\Capture.PNG "
+ CurrentDirectory() + "\\Utility\\Capture.bmp >text.txt";
您不能将重定向运算符<
和>
与CreateProcess
的普通命令行一起使用。重定向运算符是各种命令解释器的一个特性。如果你愿意,可以启动这样一个命令解释器,例如cmd /c "mycommandblahblah > somefile"
。