ドラッグ&ドロップでパス取得 – プログラミング – Home

ドラッグ&ドロップでパス取得
 
通知
すべてクリア

[解決済] ドラッグ&ドロップでパス取得


takety
 takety
(@takety)
ゲスト
結合: 23年前
投稿: 18
Topic starter  

お世話になります。
環境はWinXp VC6.0 MFC です

<やりたい事>
EXEのアイコンにファイルをドロップした時そのファイルの
パスを取得するにはどうすればいいのでしょう?

過去ログでは、コンソールでのヒントを見かけました
が、MFCでのヒントなどがあればお願いします。

また、OLEを使う方法とWM_DROPFILES ではどう違うの
でしょうか?(基本的なことですいません)
WM_DROPFILES はアプリが起動後のウィンドウにドロップ
することならできたのですが、EXEのアイコンに
ドロップしたときにはできないのでしょうか?

よろしくおねがいします


引用未解決
トピックタグ
たみあ
 たみあ
(@たみあ)
ゲスト
結合: 22年前
投稿: 57
 

この掲示板のちょっと下のほうにある
「複数のファイルをドロッグ・アンド・ドロップで一度に開くには」
というスレッドは参考になりませんでしたか?


返信引用
takety
 takety
(@takety)
ゲスト
結合: 23年前
投稿: 18
Topic starter  

参考になりました。ありがとうございます。
書くのを忘れていましたが、Dialogベースで作っています。
この方法はDialogベースではできないのでしょうか?


返信引用
RAS
 RAS
(@RAS)
ゲスト
結合: 22年前
投稿: 2
 

そう思う理由は?


返信引用
takety
 takety
(@takety)
ゲスト
結合: 23年前
投稿: 18
Topic starter  

過去ログで

>ドロップターゲットを実装するには?
>ダイアログベースではないですか?
>それなら失敗するでしょ

などのコメントがあったので。
やりたい事を実現する手段が
OLEなのか、CCommandLineInfoなのか
WM_DROPFILES なのかすら、
わかっていないものなので。
すいません。

教えてもらったCCommandLineInfoで
多分実現できるんだろうと思いますので
もう少し調べてみます。


返信引用
q55
 q55
(@q55)
ゲスト
結合: 22年前
投稿: 6
 

ヘルプに見つからないので参考まで。使えているので。
__argv[1]で、1つめのパスがショートファイルネームで取得できます。
ロングファイルネームにして下さい。
__argcも、普通のmain(int argc, char *argv[])と同じ。


返信引用
takety
 takety
(@takety)
ゲスト
結合: 23年前
投稿: 18
Topic starter  

回答有難うございます。

xxxApp::InitInstance()のなかに
下記のコードを書いてみると

int count;
for( count = 0; count < __argc; count++ ) {
TRACE( argv[%d] %s\n, count, __argv[count] );
}

argv[0]のなかに実行したアプリのパスが入っている事が
分かりました。なんだかやりたい事ができそうな気がします。

*.exeにファイルをドロップしたときのargv[1]の中に
何が入っているかは、通常どうやって見られているのでしょうか?
*.exeにファイルをドロップしたときの動作はデバッガでは
見れないのでしょうか?(基本的なことですいません)


返信引用
瀬戸っぷ
 瀬戸っぷ
(@瀬戸っぷ)
ゲスト
結合: 22年前
投稿: 160
 

>*.exeにファイルをドロップしたときのargv[1]の中に
>何が入っているかは、通常どうやって見られているのでしょうか?
>*.exeにファイルをドロップしたときの動作はデバッガでは
>見れないのでしょうか?(基本的なことですいません)

ドロップという操作では出来ませんが……
[プロジェクトの設定]-[デバッグ]の「プログラムの引数」に指定すれば動作するハズです。
(VC6の場合。VC.netの場合は名前など違うかも知れない。)
エクスプローラからexeにドラッグ&ドロップした場合、通常は引数として渡されます。
複数ファイルの場合は…それぞれスペースで区切られて渡されるハズです。
(その場合にargv[]で正しく取得出来るのかは試していません。(My Documentsフォルダの場
合))


返信引用
takety
 takety
(@takety)
ゲスト
結合: 23年前
投稿: 18
Topic starter  

回答頂いた方々、有難うございました。

argv[1]をとってくるだけでやりたい事は簡単にできました。

>[プロジェクトの設定]-[デバッグ]の「プログラムの引数」に指定すれば動作するハズで
>す。
>(VC6の場合。VC.netの場合は名前など違うかも知れない。)
>エクスプローラからexeにドラッグ&ドロップした場合、通常は引数として渡されます。
>複数ファイルの場合は…それぞれスペースで区切られて渡されるハズです。

VC6を使っているのですが、プログラムの引数はデバッガの
どこに表示されるのでしょうか?(デバッグウィンドウ?)
エクスプローラからexeにドラッグ&ドロップした場合は
ブレークはかけられないと思っているのですが・・・。
よろしければもう少し詳しく教えてください。


返信引用
瀬戸っぷ
 瀬戸っぷ
(@瀬戸っぷ)
ゲスト
結合: 22年前
投稿: 160
 

>VC6を使っているのですが、プログラムの引数はデバッガの
>どこに表示されるのでしょうか?(デバッグウィンドウ?)

ウォッチ等で明示的に指定しないと、Visual Studio上では見られないかと。
なお、上記の私のレスでの設定場所は、
プロジェクトを開いた後、メニューの[プロジェクト]-[設定]で出てくるダイアログです。
そこの[デバッグ]タブ内にあります。

>エクスプローラからexeにドラッグ&ドロップした場合は
>ブレークはかけられないと思っているのですが・・・。

こちらは、Visual Studioは関与しないのでもちろんブレークポイントでは止まりません。

というコトでドラッグ&ドロップでEXEに起動時に渡されたモノは見れませんが、
EXEに対してドラッグ&ドロップした場合は、起動時の引数として渡されるハズです。
(レジストリなどで設定を変えていなければ…ですが、通常は変更しません)


返信引用
takety
 takety
(@takety)
ゲスト
結合: 23年前
投稿: 18
Topic starter  

瀬戸っぷ さんご丁寧にありがとうございました。
またよろしくおねがいします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました