- ベストアンサー
WinAPIでのファイル操作について
- WinAPIを使用したファイル操作について学んでいます。
- 特定の参考書やWebサイトを参考にしていますが、ファイル作成のソースを実行するとエラーが発生します。
- 他のソースも同様にファイル操作に失敗することがあります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 >hFile = CreateFile()内のlpCmdLine を"ファイル名.txt"にしたらできました。 ここで言う"lpCmdLine"とは、プロセスを起動する際の引数の事です。 > int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance , > PSTR lpCmdLine , int nCmdShow) { の3つ目の"PSTR lpCmdLine"変数で、ここに引数が渡されてプロセスが始まります。 よって、このプロセスを起動する際に"hoge.exe ファイル名.txt"とすれば、 "ファイル名.txt"を作成する事になります。 ただし、このソースでは引数のチェックがされていない為、引数無しで起動された場合にはCreateFile()の第一引数(作成するファイル名)が空になり、 ここでエラーが発生します。 (前述したGetLastError()とFormatMessage()を使った場合、「指定されたパスが見つかりません。」と出たはずです。) arukanoidさんの行った変更では、lpCmdLineから"ファイル名.txt"に書き換えた事で、 引数を与えずに実行した場合でも失敗しなくなったのでしょう。
その他の回答 (1)
- Chronos198
- ベストアンサー率30% (105/349)
エラーとはどういったものでしょう?実行の失敗ですか?CreateFile()が失敗してMessageBox()が出る状態ですか? 実行の失敗の場合、どんなエラーメッセージが出力されていますか? CreateFile()に失敗する場合、CreateFile()の失敗の原因は調べましたか? GetLastError()とFormatMessage()を使ってみてください。
補足
即レスありがとうございます。 失敗した場合はファイル作成に失敗してメッセージボックスが出る状態です。 すみません作成できました。 hFile = CreateFile()内のlpCmdLine を"ファイル名.txt"にしたらできました。 普通の場合はlpCmdLineでも作成できるのでしょうか?
お礼
説明ありがとうございました。 また質問してるのを見かけた時はよろしくお願いします。