
前回、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で質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
コマンドプロンプトのコピー関...
-
実行ファイルのパスを取得したい
-
Excel 相対パス
-
【VB.NET】App.configにファイ...
-
xcopyコマンドの進行状況を表示...
-
fopenでのパス指定
-
Excel2010VBAでエラーが出る相...
-
【VBA】ExcelマクロでCSVファイ...
-
DOSのバッチファイルでカレント...
-
VBA★PDFをPDFアプリで印刷し...
-
開いているファイルを削除し、...
-
ShellExecuteでエクセルファイ...
-
ExcelVBAの使い方 ¥の使い方...
-
Eclipse
-
VBS パスに変数を入れたい
-
エクセルのマクロで特定フォル...
-
VBAでパワーシェルを実行したい...
-
[VB2008]引数付きパスでアプリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
Excel 相対パス
-
実行ファイルのパスを取得したい
-
xcopyコマンドの進行状況を表示...
-
【VB.NET】App.configにファイ...
-
ExcelのVBAで上書き保存を確...
-
コマンドプロンプトのコピー関...
-
VBAでパワーシェルを実行したい...
-
エクセルのマクロで特定フォル...
-
Eclipse
-
VBA★PDFをPDFアプリで印刷し...
-
VBAでの共有パスにつきまして
-
C#でのProcess.Startと変数path
-
【VBA】ExcelマクロでCSVファイ...
-
ExcelVBAの使い方 ¥の使い方...
-
fopenでのパス指定
-
EXCEL(VBA)で指定フォルダ内の...
-
A列に記載されているフォルダ...
-
パスワード保護されたExcelファ...
おすすめ情報