2011-01-05 13 views
0

この問題が発生しています。私のShellExecuteはうまく動作し、出力はPNG画像ファイルです。問題は、このプロセスがファイルを生成するのに時間がかかることです(秒)。一方、私のresultは既に実行されていますが、ShellExecuteのPNGファイルがまだ存在しないため、エラーメッセージが表示されます。ファイルが最初に存在することを確認する方法、その後はresultを実行する方法。ファイルの作成後にコードを実行する方法は?

ShellExecute(0,       
       _T("open"),    
       _T("c:\\convert.exe"), 
       full,     
       0,      
       SW_HIDE); 

    result = ExecuteExternalProgramCompare(L"c.png", L"t.png"); // this line always gives error because the file c.png is not produce yet by shellexecute above. 

更新: ShellExecuteExをに変換する私の試み。

SHELLEXECUTEINFO info = {0}; 

info.cbSize = sizeof(SHELLEXECUTEINFO); 
info.fMask = SEE_MASK_NOCLOSEPROCESS; 
info.lpFile = _T("c:\\convert.exe"); 
info.lpParameters = full; 
info.nShow = SW_HIDE; 

答えて

1

ShellExecuteExを使用してください。これにより、呼び出されたプロセスのハンドルを取得できるので、プロセスが終了するまで待つことができます。

SHELLEXECUTEINFO info = {0}; 

info.cbSize = sizeof(SHELLEXECUTEINFO); 
info.fMask = SEE_MASK_NOCLOSEPROCESS; 
info.lpVerb = _T("open"); 
info.lpFile = _T("c:\\convert.exe"); 
info.lpParameters = full; 
info.lpDirectory = NULL; 
info.nShow = SW_HIDE; 

if (ShellExecuteEx (&info)) 
{ 
    WaitForSingleObject (info.hProcess, INFINITE); 
} 
+0

私のパラメータをshellexecuteの内部でこれに変換するにはどうすればよいですか?それは値を渡すための異なる構造を持っているようですか? – karikari

関連する問題