- Win32API質問箱 Build120©2ch.net
490 :デフォルトの名無しさん[sage]:2015/05/30(土) 18:55:53.77 ID:YkyYlSQN - >>487
そもそも:strcpyもstrcatもただの文字列操作だぞ ::strcpy_s(m_cFind, MAX_PATH, "D:\\\"Program Files\""); //D:\\test なら問題なく取得できた ::strcat_s(m_cFind, MAX_PATH, "\\"); ::strcat_s(m_cFind, MAX_PATH, "*"); 実行した結果の D:\"Program Files"\* こんなディレクトリ名ありえんだろ 自作フォルダなら実際のフォルダ名が半角じゃなくて全角になっているとか気づきにくいミスをしている可能性があるから 手入力じゃなくてコピペするようにするとかしてみたらどうだ?
| - Win32API質問箱 Build120©2ch.net
491 :デフォルトの名無しさん[sage]:2015/05/30(土) 19:06:27.28 ID:YkyYlSQN - >>489
"" が必要になるのはコマンドラインなどのように、空白で文字列の分割が行われてしまう場合だけ。 例えばCreateProcessのlpszImageNameかlpszCommandLinのいずれかでコマンドラインを指定する場合など。 とりあえず試したが(_s付きのほうは試してなくて_s無しのほうで) 空白ありでもちゃんとディレクトリ内のフォルダ名を取得できる。 ちなみにUAC効いてるProgram FilesとProgram Files (x86)で、だ。
| - Win32API質問箱 Build120©2ch.net
495 :デフォルトの名無しさん[sage]:2015/05/30(土) 19:29:42.57 ID:YkyYlSQN - >>494
ってことは_s付きの関数に問題があったってことでね? ::strcpy_s(m_cFind, MAX_PATH, "D:\\Program Files"); ::strcat_s(m_cFind, MAX_PATH, "\\"); ::strcat_s(m_cFind, MAX_PATH, "*"); これ実行後の m_cFind はどうなっているんだ? 可能性としては MAX_PATH の定義がおかしくなっているためすべてをコピーしきれないとか。
|
|