读取结果太快

时间:2015-02-25 11:55:44

标签: c++ mfc imagemagick

我的代码存在问题。 我想执行文件夹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中没有安装的应用程序。

谢谢

1 个答案:

答案 0 :(得分:0)

关于声明

CString command="convert.exe "
    + CurrentDirectory() + "\\Utility\\Capture.PNG "
    + CurrentDirectory() + "\\Utility\\Capture.bmp >text.txt";

您不能将重定向运算符<>CreateProcess的普通命令行一起使用。重定向运算符是各种命令解释器的一个特性。如果你愿意,可以启动这样一个命令解释器,例如cmd /c "mycommandblahblah > somefile"