"My Documents"などスペースがあるフォルダ名について。

[戻る]
とろ 2001/11/16(金) 15:38:37
ShellExcuteでアプリケーションをを開くときに、引数のパス名に"My Document"
などの、スペースがあるパス名だと、エラーが出て開けません。
良い対処の方法があったら教えてください。お願いします。

例;ShellExecute(NULL,"open",DataFileName,"C:\\My Documents\\hello.c",NULL,SW_SHOWNORMAL);

toru [E-Mail] [HomePage] 2001/11/16(金) 16:00:15
> ShellExecute(NULL,"open",DataFileName,"C:\\My Documents\\hello.c",NULL,SW_SHOWNORMAL);

というかDataFileNameがわからないと対処のしようが無いんですが...

とろ 2001/11/16(金) 16:11:59
失礼しました。
DataFileNameは"MSDEV.EXE"です。
よろしくお願いします。

toru [E-Mail] [HomePage] 2001/11/16(金) 17:01:20
フルパスじゃないんですか?それだとダメですよ。
あと気づいたんですけどカレントディレクトリは入れないとマズいですよ

とろ 2001/11/20(火) 11:58:32
ShellExecute(NULL,"open",MSDEV.exe,"C:\\My Documents\\hello.c",NULL,SW_SHOWNORMAL);
で実行させると、Visual Studioは立ち上がるのですが、
「C:\Myファイルが見つかりません。正しいファイル名を入力してください。」
「Documents\hello.cファイルが見つかりません。正しいファイル名を入力してください。」
とでてきます。
""でくくると、「'ShellExecuteA' : 関数が不正な 4 個の実引数をともなって呼び出されました。」
というコンパイルエラーが出てしまいます。
何かいい方法をご存知でしたら教えてください。

YuO [E-Mail] 2001/11/20(火) 12:21:56
> ""でくくると、「'ShellExecuteA' : 関数が不正な 4 個の実引数をともなって呼び出されました。」

って,""C:\\My Documents\\hello.c""ってやったんですか?
文字列に"を含めるには,\"を使います。なので,
"\"C:\\My Documents\\hello.c\""
としたらどうなるでしょう。これで恐らく開けるはずです。

最後の手段として,GetShortPathNameでショートファイル名を取得して開くとか。
これだと,スペースが消えるので確実です。

とろ 2001/11/20(火) 12:58:37
ShellExecute(NULL,"open","MSDEV.exe","\"C:\\My Documents\\hello.c\"",NULL,SW_SHOWNORMAL);
で開くことができました。
よきアドバイス、ありがとうございました。

とろ 2001/11/20(火) 13:00:06
ShellExecute(NULL,"open","MSDEV.exe","\"C:\\My Documents\\hello.c\"",NULL,SW_SHOWNORMAL);
で開くことができました。
よきアドバイス、ありがとうございました。

古いスレッドには追加発言できません。