• 締切済み

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

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

    前回、exeファイルにドラッグすることで動作するプログラムというタイトルで質問したものです。いといろやっていたら上手くいったと勘違いし、質問を締め切ってしまいました。実は上手くいっておらず、再度質問させていただきます。お手数をお掛けし申し訳ございませんが宜しくお願い申し上げます。 現在上手くいかないプログラムは以下のようなものです(具体的処理は省いています) #include <windows.h> #include <tchar.h> int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow){ HANDLE hfile; hfile = CreateFile(lpCmdLine,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_READONLY,NULL); if(hfile == INVALID_HANDLE_VALUE){ MessageBox(NULL,_T("error"),NULL,MB_OK); return false; } //ここで処理をします(今回は省略させていただきました) return 0; } このプログラムのexeファイルのアイコンにデータファイルをドラッグし、処理を行いたいのですが、データファイル名に日本語が含まれると hfile が INVALID_HANDLE_VALUEとなります。 データファイル名が英字のみの場合は上手くいきます。文字セットはUnicode文字セットを使用しています。 どなたかご教授お願い申し上げます。

  • PHPでexeファイル実行

    C言語でMPG形式の画像ファイルを読み込み、画像処理をしてテキスト形式で画像データを出力するプログラムを作成したのですが、 これをPHPプログラム内で動作させ、テキストデータ(できればバイナリのほうがいい)を読み取りたいと思います。 これはexeファイルをexecやsystem関数で実行することで解決できるのでしょうか? また、C言語の画像処理プログラムが画像を読み込んでからテキストデータを作成するまで1分ほどのタイムラグがあります。 どうすればPHP内の処理でexeファイル実行→exeがデータベースから画像を読み込む→ 1分処理待ち→テキスト作成→作成されたテキストデータをPHPで読み込み とできるのでしょうか? ちなみに、exeファイルとphpで作成した画像データベースはサーバー機に置くつもりです。 テキストデータを介さなくても、C言語プログラムからphpに直接データを渡す方法があればそちらのほうが望ましいです。 連続投稿で申し訳ないのですが、急を要するのでぜひともご解答お願いします。

    • ベストアンサー
    • PHP
  • バッチファイルプログラム(拡張子)

    あるデータをバイナリに変換するhoge.exeがあります。 これをドラッグ&ドロップで一括処理したいと考えており、下記のようなバッチファイルを作成しました。 %~d1 cd %~dp1 for %%q in (%*) do a.exe %%q > "%%q.bin" このプログラムだと、 a.movというファイルをD&Dするとa.mov.binというファイル出力となってしまいます。 a.binというファイルを出力させるにはどのように 変更すれば良いでしょうか? なお、複数ファイルの処理に対応したいので 最後を%~n1.binにするとうまいきません。

  • CUIプログラムにドラッグして1度に複数の変換は?

    みなさま、こんにちは。 Visual c++2010Express-Cを用いて、C言語のプログラムを作成しています。CUIのプログラムで、作成されたexeにファイルをドラッグしてファイルの変換をするプログラムです。 main.c の始まりは int main(int argc, char *argv[]) です。 ココで問題があるのですが、作成されたexeには1つのファイルをドラッグすることでしか変換出来ない、つまり1度のドラッグで1つのファイルしか変換出来ません。 現在、400ファイル程あるのですが、400回もドラッグをするのは果てしなく苦痛です。 int main(int argc, char *argv[]) 上記を変更して、複数のファイルを選択して1度のexeへのドラッグで変換出来ないものでしょうか? もしくは違った方法がありますでしょうか? どなたかお分かりになりましたら、ご教示願えないでしょうか? お手数をおかけ致しますが、よろしくお願いいたします。

  • exeファイルしかないプログラムとそうでないプログラムの違い

    プログラムにはexeファイル単体で動くものと、exeファイル以外にdllファイルなどさまざまな形式のデータと組み合わせて動くものがあります。後者のは、なぜexeファイル以外のデータが必要なのでしょうか?複数の機能を搭載していて、必要なときのみ呼び出すようにした方が効率的だからですか?

  • ExcelVBAでEXEファイルを動かしたい

    Excel VBAで下記のexeファイルを開き、操作をしたいのですが、やり方がわかりません。 http://www5b.biglobe.ne.jp/~t-kamada/CBuilder/pcdgraph.html 1)このプログラムを起動し 2)Dataというフォルダにある、inputというタイトルのcsvファイルを読み込ませる(このプログラムでいうところの、ファイルボタンをクリックし、inputファイルをクリックすることにあたります) 3)骨格曲線というチェックボックスにチェックをいれ、グラフ出力をクリック、プログラムを閉じる という流れをやりたいのですが、VBA上でexeプログラムのチェックボックスにチェックをいれ、ボタンを押すということをどうやるのかがわからず、困っています。

  • perlプログラムが動かない

    パールのプログラムを作成して拡張子「.pl」で保存するとアイコンがパールのマークになりますよね。 プログラムファイルにデータファイルをドラッグすると、プログラムファイル(拡張子.pl)のアイコンが白黒反転して、目的の加工データをファイルとして出力するプログラムがるのですが、プログラムを作成したパソコンともう一台しか動作しません。他のパソコンでは、プログラムファイルにデータファイルをドラッグしても、プログラムファイル(拡張子.pl)のアイコンが白黒反転せず、パールプログラムが動作しません。 どこの設定をどのように変更すればいいのでしょうか。(プログラムファイルのアイコンを白黒反転させるにはどうしたらいいのでしょうか。) コマンドプロンプトでパスが通っているか確認をしたのですが、どのパソコンもパスは通っています。 プログラムの動作するパソコンの「システム環境変数のpathとPATHEXT」をプログラムの動作しないパソコンにコピーペーストしてもNGでした。 ※perl.exeが入っているディレクトリは同じにしています。プログラムファイとデータファイルをperlフォルダに入れても駄目でした。  OSは、Windows XPです。

  • VBSで指定したフォルダにファイルを作成できる権限があるかチェックしたい

    お世話になります。 現在,VBSでプログラミングしております。 下記の流れで、指定したフォルダにファイルを作るプログラムをしたいのですが、(2)の処理をどのようにしたらよいのかわかりません。 一度、CreateFileでエラーの場合はエラーの戻り値を受け取れるのでしょうか?また、書き込み権限があるかないかの情報を取得できる関数がもしあるのでしたら教えて頂きたいと思います。 ---------流れ (1)ユーザが、ファイルを作成するフォルダを指定 (2)そのユーザがそのフォルダにファイルを作成する権限があるかのチェック (3)指定したフォルダにファイルを作成 ※mScripting.FilesSystemObjectのCreateFileでファイル作成しております。 お手数ですが何卒よろしくお願いします。

  • VB6でファイルを開く

    こんにちは。 いま作成中のプログラムなんですが、data.csvというファイルを作って、そのファイルに値をいれていきます。 現在、data.csvはexeファイルのあるフォルダに保存されるようになっています。 このデータを、プログラム中で呼び出して見たいのですが、どうすればよいでしょうか? 第一希望としては、計算処理中に呼び出してExcelに値が入っていくのを見たいです。 が、むりなら計算処理が終了した後でも可です。 よろしくお願いします。

  • プログラムのファイルの保存

    プログラミングについてです。 学校でC言語を学習している最中です。 パソコンはwindows7をつかっており、KNOPIXのCDがあります。 visualC++ で作成したプログラムのファイルをUSBに保存し、 シャットダウンした後にKNOPIXを起動させ、GNOME端末でそのプログラムを実行させることはできました。 しかし、KNOPIXにおいてemacsで作成しUSBに保存したプログラムを、visualC++ でデバックすることはできませんでした。 プログラムのファイルは開くことができたのですが、デバック開始をクリックすることができませんでした。 学校のコンピュータがLinuxであるため、プログラミングの課題を自分のパソコンでしてUSBに保存したあと、それを学校のコンピューターで開きたいと考えています。emacsよりもvisualC++のほうが取り組みやすいので、上のようにやってみました。 また、USBに保存せずに、プログラムファイルをDropboxに保存してもいいかなとも考えました。 KNOPIXにおいてemacsで作成しUSBに保存したプログラムを、visualC++ でデバックするにはどうすればいいですか。 初心者です。質問文にわかりにくいところがあるかもしれませんが、よろしくお願いします。

専門家に質問してみよう