[BlueLeaf1336]> PROBLEMS> DelphiでShellオブジェクトを使う>
history | TOP |
2006/05/29:作成
2006/05/29 | TOP |
最近、いろんな状況から、JPGファイルのExif情報を読み取りたくなりました。Delphiでも誰かやってるだろうと思って調べてみると、なにやら不穏な感じです。
いくらでも参考になりそうなサイトは見つかって、ソースコード(C言語。金儲けに使わない限りフリー)さえ入手することができます。が!! なんとややこしいことか。Exif file format を参考にすこーしだけやりはじめましたが、すぐにイヤになりました。
ところで、デジカメで撮影したJPGファイルをWindowsXPのファイルのプロパティで概要を詳細表示してみると、こんな感じです。
十分です。イヤ完璧です。これでええやん。これをとりだせたらええやん。というわけで、検索してみました。
これは、ワードファイルの、ということですが、なにやらそれっぽい感じです。ただ、VisualBasicなので、これをDelphiでやるには? ということで、
この二つを参考に、少しやってみるとこんな感じに。
いやいや、まったく足りてないんですが、でも「DSC-V1」というカメラのモデルや、写真のサイズが取得できました。ひょっとして脈ありか?
そんなこんなで、このページが作成されました。ちなみに、さっきのカメラのモデルに毛の生えた情報は、次のコードで取得しています。重ねて確認しておきますが、なーんにも考えず、つぎはぎしただけです。Platform SDK も少し参考にしましたが、Shellオブジェクトが有効かどうかのチェックすらDelphiに翻訳できず、エラー処理も全部省いています。
uses ComObj; {$R *.dfm} // http://www2.moug.net/bbs/wordvba/20060517000002.htm // http://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/article/043/043760.html // http://pc.2ch.net/tech/kako/1019/10196/1019654975.html procedure TForm1.Button1Click(Sender: TObject); var FilePath: String; FileName: String; ObjShell: Variant; ObjFolder: Variant; ObjFolderItem: Variant; i: Integer; begin if (not OpenDialog1.Execute) then Exit; Memo1.Clear(); FilePath := ExtractFileDir(OpenDialog1.FileName); FileName := ExtractFileName(OpenDialog1.FileName); ObjShell := CreateOleObject('Shell.Application.1'); ObjFolder := ObjShell.NameSpace(OleVariant(FilePath)); ObjFolderItem := ObjFolder.ParseName(FileName); for i := 0 to 40 do begin Memo1.Lines.Add(ObjFolder.GetDetailsOf(ObjFolderItem, i)); end; end;
始まったばかり、ということです。実は、Exif情報はどうでもよくなってきてます。それよりも、Shellオブジェクト、Folderオブジェクト、FolderItemsオブジェクト、FolderItemオブジェクト について調べてみようか、など考えています。なんの用途も見出せないので、時間の無駄ですが、だからこそやる気になるというか。
EOF | TOP |