※ ChatGPTを利用し、要約された質問です(原文:ShellExecuteEx関数の使い方について)
ShellExecuteEx関数の使い方について
このQ&Aのポイント
FTPで実行するコマンド定義ファイルを作成し、自動化する方法について
ShellExecuteEx関数とWaitForSingleObject関数を使用してFTPの終了を待つ方法について
system関数とShellExecuteEx関数の比較とFTPの実行に関する疑問点について
環境 VC6++/WindowsXP
やりたい事
・FTPで実行するコマンド定義ファイルを作成(コマンドは都度変わる)
・FTPを自動化するために-sオプションをつけ上記ファイル指定して実行
・その(FTP)結果をリダイレクトしてファイルに落とす
・FTPの終了待ってコマンド定義ファイルを削除
・できればDOS窓を出したくない
上記を行うために次の様なコードを書きました
sei.nShow = SW_SHOWNORMAL;
sei.fMask = SEE_MASK_FLAG_DDEWAIT;
ShellExecuteEx(&sei);
WaitForSingleObject(sei.hProcess, INFINITE);
FTPは動作するのですが実際の動作完了前に次の行に実行が移ってしまいます
(FTPは最後にquitします)
何か足りないことがあるのでしょうか?
当初system関数使いましたがDOS窓開くのがうっとおしいため
ShellExecuteExに変更しました
system関数ではDOS窓は出ますが完了まで戻ってきません
何かやらなければいけないことが足りないのか
どうあがいてもできないのか(FTPだから?)が判断付きません
どなたか詳しい方教えていただけないでしょうか
※ 極論言えば目的が達成できればどんな形でもいいので
関数変えればできるでもいいです
お礼
>ShellExecuteEx実行後のsei.hProcessが0になっていませんか? そのとおりです >fMaskに指定されているDDEWAITはこの場合は関係ないのではないでしょうか。 セットしてもしなくても同じだったのでおそらく関係ないと思います >NOCLOSEPROCESSを指定してみてはどうでしょう。 これを行うことでsei.hProcessに値が入り 思い道理の動きになることを確認できました ありがとうございました