アプリ版:「スタンプのみでお礼する」機能のリリースについて

すみません。
ShellExecuteEx関数を使用して、コマンドラインで実行していた実行ファイルを起動させたいのですが、実行ファイルに渡す引数にスペースが含まれると、ペースの前までか渡せないのですが、スペースを含む引数を渡す方法を御存知ないでしょうか?
(詳細)
コマンドライン(cmd.exe)では”○○○.exe 引数1 引数2 引数3(リターン)”で実行しているのですが、ShellExecuteEx("○○○.exe", "引数1 引数2 引数3”, NULL, ・・・・, SW_SHOW); のような形で作成して実行すると、引数1までで○○○.exeが実行されてしまい、スペースを挟んだ引数2以降が渡せていません。
スペースを挟んだ引数を渡す方法を御存知ないでしょうか?
すみません。

A 回答 (1件)

>引数1までで○○○.exeが実行されてしまい、スペースを挟んだ引数2以降が渡せていません。



はどのように確認されたのでしょうか?

実行するアプリ側に依存しますが……
ShellExecuteEx("○○○.exe", "\"引数1 引数2 引数3\"”, NULL, ・・・・, SW_SHOW);
で、""でくくってみてはどうでしょうか?
この場合、mainに渡されるargv[]で引数が正しく取れるのかは…やったことありませんので不明ですが。
# 半角スペースはtab区切りでの分解がされないまま渡されるので自分でやる必要がある…とかどこかで見たような。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
引数に""でくくり、SHELLEXECUTEINFO の ○.lpParameters に渡して、ShellExecuteEx関数を実行してみましたが思い通り実行されませんでした。
○○○.exe の実行結果はやはりスペースで区切る前の引数1だけで動作していました。(確認方法としては、○○○.exe の実行結果で最初の引数1しか渡していない時の実行結果となる事です。)
引数としては渡されているが、実行ファイル(○○○.exe)の性質によるのかもしれません・・・。

とりあえず、.batファイル(コマンドラインで入力する通り記載)を作り、.batファイルを実行することで対応することにしました。

早々のアドバイスありがとうございました。

お礼日時:2008/03/08 16:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!