• 締切済み

exeファイルにドラッグすることで動作するプログラム

現在、exeファイルのアイコンにデータファイルをドラッグすることで、プログラムを動かし、データファイルを読み込んで処理するプログラムをVisualC++2008ExpressEdtionで作成しています。 ここで質問が2つあります。 <質問1>  データファイル名に日本語(2バイトコード)が含まれている場合、CreateFile関数でエラーとなります。ファイル名に日本語を含む場合どのようにすればよいか教えてください。 <質問2>  現在作成しているプログラムでは、処理結果をファイルに出力しています。出力ファイルのフォルダをexeファイルのある場所にしたいのですが、プログラムコード上で相対パスで指定すると、上手く動きません(別フォルダに出力ファイルが作成されます)。ドラッグによってexeファイルを起動する場合、exeファイルのあるフォルダを知るにはどうしたらよいのでしょうか?

みんなの回答

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

1. CreateFile関数でエラーとなります。 ということですがエラー内容は何でしょうか char*型をLPCTSTRに変換できないとかならCreateFileAかCreateFileWか文字コードにあった関数を使われたらいいと思います。 2. argv[0]から実行ファイルのパスを取得してはどうでしょう

cyacya2000
質問者

お礼

早速のご回答ありがとうございました。 CreateFile関数のエラーは実行時にINVALID_HANDLE_VALUEを返すということです。GetLastErrorとFormatMessageを利用して調べている最中ですが、よくわかりません。引き続き調べてみます。 今回、プロジェクトのプロパティで、文字セットをUnicode文字セットを使用するにしています。マルチバイト文字セットにするとCreateFileの部分は上手く動くのですが、他の部分をUnicode文字セット用に作成してきたので、他の部分がエラーになってしまいます。Unicode文字セットを利用したままで上手く処理するのはどうしたらよいのでしょうか?

関連するQ&A

専門家に質問してみよう