
前回、exeファイルにドラッグすることで動作するプログラム再質問 をした者です。本当に何度もすみません。
前回から調べた結果「ファイル名に日本語を指定したとき」ではなく、「ファイル名に半角スペースを指定したとき」上手くいかないということが解りました。
DOSでは半角スペースが区切り記号になってしまうことが影響しているのでしょうか?
一般的にデスクトップにデータファイルを作成すると「Documents and Settings」の下部におかれます。この場合、どうしても半角スペースを含んでしまいます。しかし、MicroSoftWordでは、デスクトップにおかれた名前に半角スペースを含むdocファイルをWORD.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;
}
開発環境はVisualC++2008ExpressEditionです。
このプログラムをビルド後、exeファイル上に 「a a」のように半角スペースを含むファイルをドラッグするとerrorになります。
No.1ベストアンサー
- 回答日時:
MessageBox( NULL, lpCmdLine, NULL, MB_OK );
としてみればわかると思いますが、半角スペースが入っている場合、" " で囲まれた文字列が渡されるんですね。
自力で " " を取り除いても良いと思いますが、PathUnquoteSpaces() という API を使用すれば簡単に " " を取り除くことができます。
( ただし、Windows 2000 以降、または NT 4.0、Windows 95、98 等は IE 4.0 以上がインストールされていなければならないらしいです。)
前回の質問にあった exe ファイルが置かれているパス名の取得方法ですが、GetCommandLine() で実行ファイルのパスからコマンドラインパラメータまで全部が入った文字列が取得できますので、何らかの方法で、そこからパス名を切り出せばよいかな、と思います。
早速のご回答ありがとうございます。たしかに””で囲まれていました。プログラムを修正し、動きました。exeファイルの場所に関しても問題なくできました。本当にありがとうございました。
No.4
- 回答日時:
間違えました
__argv
ではなくて
__targv
です
訂正します
早速のご回答ありがとうございます。__targvを使ったら簡単にできました。
__targvは初めて知りました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Excel(エクセル) 【マクロ】フォルダAからダBへファイルを、ファイルの更新日時の条件で、1つづつ移動するには? 3 2022/08/25 09:56
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Excel(エクセル) 【VBA】ファイルパスに半角スペースが入ると、VBAが動かない 5 2022/08/04 20:52
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Excel(エクセル) 【マクロ】フォルダを2つのモニターの定位置に並べたい 2 2022/09/02 01:14
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
ExcelのVBAで上書き保存を確...
-
エクセルVBAで一つ上の階層...
-
Excel 相対パス
-
実行ファイルのパスを取得したい
-
エクセルのマクロで特定フォル...
-
【VB.NET】App.configにファイ...
-
VBA★PDFをPDFアプリで印刷し...
-
VBAでの共有パスにつきまして
-
VBAでパワーシェルを実行したい...
-
xcopyコマンドの進行状況を表示...
-
C++でネットワークパスのファイ...
-
リストボックスにファイル名の...
-
ショートファイルネーム→ロング...
-
C#でのProcess.Startと変数path
-
Excel2010VBAでエラーが出る相...
-
コマンドプロンプトのコピー関...
-
TeraTerm マクロの getdir コマ...
-
【VBA】ExcelマクロでCSVファイ...
-
EXCEL(VBA)で指定フォルダ内の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
xcopyコマンドの進行状況を表示...
-
Excel 相対パス
-
実行ファイルのパスを取得したい
-
コマンドプロンプトのコピー関...
-
【VB.NET】App.configにファイ...
-
エクセルのマクロで特定フォル...
-
VBA★PDFをPDFアプリで印刷し...
-
ExcelVBAの使い方 ¥の使い方...
-
fopenでのパス指定
-
ExcelのVBAで上書き保存を確...
-
EXCEL(VBA)で指定フォルダ内の...
-
C#でのProcess.Startと変数path
-
【VBA】ExcelマクロでCSVファイ...
-
VBAでパワーシェルを実行したい...
-
A列に記載されているフォルダ...
-
初心者powershellのPS1ファイル...
-
Eclipse
-
VBAとロングファイル名
おすすめ情報