VC++/CLIです。
以前にこちらでファイル情報の取得方法をお聞きしましたが再度行き詰ってしまったた
めアドバイスお願いします。
前のスレを解決済みとしてしまったため新スレで申し訳ございません。
あるディレクトリからファイル情報を取得してListViewへ表示させていますがファイル
名、ファイルサイズ、ファイル作成日等はFileInfo^で取得出来るのですがWindowsの詳
細表示の設定にあるファイルの種類(ビデオクリップ、ビットマップイメージ等)やファ
イルの大きさ(1280×1024等)の情報の取得はどのようにしたら取得できるのでしょう
か?何か他のAPIやクラスを使用しなければ無理でしょうか?
http://ant0x.udap.jp/tips/tips_fileSummaryInfo.htm
の
>Shellを利用する方法
で十分ならそれでよさそう。
>Dsofile.dllを使用する方法
はC#,VBではないので直接IPropertyStorageを使ったほうが効率がよいでしょう。
Blueさん
いつもながら早々のレスありがとうございます。
参照の追加でMicrosoft Shell Controls And Automationを追加してshellを利用する方
法で上手く取得することが出来ました。
Shellを実装したプログラムは初めてですので勉強になりました。
解決済みですが1点質問があります。
Shell32でファイル情報を取得するプログラムですが
void CreateFieInfo(String^ strName){
strSozaicyou = ";
strPixcel = ";
ShellClass^ shell = gcnew ShellClass();
Folder^ f = shell->NameSpace(パス);
FolderItem^ item = f->ParseName(strName);
strSozaicyou = f->GetDetailsOf(item,21);
strPixcel = f->GetDetailsOf(item,26);
}
>>shell->NameSpace(パス);
上記のパスですが相対パス(../フォルダ/)で記述したいのですが相対パスだと値が取得
できませんでした・・・。絶対パスなら問題ないのですが・・・。相対パスを使用して
何か上手くいく方法はありませんでしょうか?
試せる環境がないのでなんともいえないのですが、
本当にうまくいきませんか?
相対パスはカレントフォルダからになりますが、正しいパスになっていますか?
(Directory::GetCurrentDirectory()でカレントフォルダが確認できる)
もしだめなら、FileInfoオブジェクトからFullNameプロパティの値を取得して
使うのはどうでしょうか?
(これはうまくいくはず。(C#で確認済み。出来なければパスが間違っている))
Blueさん
いつもありがとうございます。
>>相対パスはカレントフォルダからになりますが、正しいパスになっていますか?
>>(Directory::GetCurrentDirectory()でカレントフォルダが確認できる)
相対パスは正しいパスでした。Defineで相対パスを定義しており他のロジックでも使用
しているのですがShell処理以外の処理では問題なく動作しています。
>>もしだめなら、FileInfoオブジェクトからFullNameプロパティの値を取得して
>>使うのはどうでしょうか?
FullNameプロパティですとC:\test\test.txtとフルパスで取得されてしまいますが
ShellClass^ shell = gcnew ShellClass();
Folder^ f = shell->NameSpace(C:\test); ←ファイルがあるフォルダ
FolderItem^ item = f->ParseName(test.txt); ←ファイル
String^ a = f->GetDetailsOf(item,21);
上記のようにフォルダとファイルを別けて取得しているのですがFullNameプロパティで
ファイルがあるフォルダまでのパスだけを取得したいのですが可能でしょうか?
たびたびすみません
FileInfoオブジェクトのDirectoryNameプロパティの値を取得して対応しました。
お手数お掛けしましたm(--)m
>ファイルがあるフォルダまでのパスだけを取得したいのですが可能でしょうか?
System::IO::Pathあたりのメソッドを使えば可能でしょう。
[C#,VB]パスに関する情報を取得する
パスからファイル名、拡張子、ディレクトリ名、ルートディレクトリ名等を取得する
http://dobon.net/vb/dotnet/file/pathclass.html
ついでに、相対パスから絶対パスにするのもSystem::IO::Pathのメソッドで出来ます
ね。
[C#,VB]現在のディレクトリを基準にして相対パスから絶対パスを取得する
http://dobon.net/vb/dotnet/file/getabsolutepath.html
http://6f36ff4cc71b77682ce2a1d67949b319-t.fflpbg.org <a href= http://6f36ff4cc71b77682ce2a1d67949b319-h.fflpbg.org>6f36ff4cc71b77682ce2a1d67949b319</a> [url] http://6f36ff4cc71b77682ce2a1d67949b319-b1.fflpbg.org [/url] [url= http://6f36ff4cc71b77682ce2a1d67949b319-b2.fflpbg.org ]6f36ff4cc71b77682ce2a1d67949b319[/url] [u] http://6f36ff4cc71b77682ce2a1d67949b319-b3.fflpbg.org [/u] 771741281ca914d1c8c7feeb20b7f8c3