Try this -- quick and dirty -- not bulletproof yet --
(defun _Get_File_Properties_Ex ( file / result shell name_space items item )
;; See original post: http://tinyurl.com/yxa7ngfz
;;
;; Get a file's extended properties (Title, Subject, Category ...)
;; returning the result as a list of cons pairs:
;;
;; ( ("Name" . "Drawing.dwg")
;; ("Size" . "42 KB")
;; ("Type" . "DWG File")
;; ("Date Modified" . "2011/03/21 10:57 AM")
;; ...
;; )
(vl-catch-all-apply
(function
(lambda ( / folder_name file_name i count )
(setq
folder_name (vl-filename-directory file)
file_name (strcat (vl-filename-base file) (vl-filename-extension file))
shell (vlax-create-object "Shell.Application")
name_space (vlax-invoke shell 'NameSpace folder_name)
items (vlax-invoke name_space 'Items)
item (vlax-invoke name_space 'ParseName file_name)
i (setq count 300)
)
(if item
(repeat count
(setq result
(cons
(cons
(vlax-invoke
name_space
'GetDetailsOf
items
(setq i (1- i))
)
(vlax-invoke
name_space
'GetDetailsOf
item
i
)
)
result
)
)
)
)
)
)
)
(vl-catch-all-apply 'vlax-release-object (list item))
(vl-catch-all-apply 'vlax-release-object (list items))
(vl-catch-all-apply 'vlax-release-object (list name_space))
(vl-catch-all-apply 'vlax-release-object (list shell))
(vl-remove-if
(function (lambda (item) (eq "" (car item))))
result
)
)
(defun _Get_Image_Dimensions ( file )
( (lambda ( props foo bar keys ) (if props (mapcar 'bar keys)))
(mapcar (function (lambda (p) (cons (strcase (car p)) (cdr p)))) (_Get_File_Properties_Ex file))
(lambda (p) (cons (car p) (vl-string-subst "" "?" (cdr p))))
(lambda (key) (foo (assoc key props)))
'("HEIGHT" "WIDTH")
)
)
(_Get_Image_Dimensions "H:\\Help\\mbicon.bmp")
( ("HEIGHT" . "45 pixels")
("WIDTH" . "35 pixels")
)
Cheers.