• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:WinAPIでのファイル操作について教えて下さい。)

WinAPIでのファイル操作について

このQ&Aのポイント
  • WinAPIを使用したファイル操作について学んでいます。
  • 特定の参考書やWebサイトを参考にしていますが、ファイル作成のソースを実行するとエラーが発生します。
  • 他のソースも同様にファイル操作に失敗することがあります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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"に書き換えた事で、 引数を与えずに実行した場合でも失敗しなくなったのでしょう。

arukanoid
質問者

お礼

説明ありがとうございました。 また質問してるのを見かけた時はよろしくお願いします。

その他の回答 (1)

回答No.1

エラーとはどういったものでしょう?実行の失敗ですか?CreateFile()が失敗してMessageBox()が出る状態ですか? 実行の失敗の場合、どんなエラーメッセージが出力されていますか? CreateFile()に失敗する場合、CreateFile()の失敗の原因は調べましたか? GetLastError()とFormatMessage()を使ってみてください。

arukanoid
質問者

補足

即レスありがとうございます。 失敗した場合はファイル作成に失敗してメッセージボックスが出る状態です。 すみません作成できました。 hFile = CreateFile()内のlpCmdLine を"ファイル名.txt"にしたらできました。 普通の場合はlpCmdLineでも作成できるのでしょうか?