welcome to tetsuyanbo web site!!

tetsuyanbo

C#

C#メモ SHGetFileInfo()メソッドを使ってファイルのプロパティの全般タブに表示されるファイルの種類の文字列を取得してみる

投稿日:

ファイルの種類は拡張子でも判別できるんだけど同じアプリでもいろんな拡張子(例えばExcelだとxls、xlsx、xlsmとか)だったりする場合があるので、別の判別方法はないものかと。
ファイルのプロパティにファイルの種類ってのがあるからとりあえずこいつを使ってみようと思ったのが発端。

ネットに聞いてみたけど、C#のAPIになくて..調べるのに予想以上に時間かかったのでメモっとくことに。
ポイントはこんな感じ。

  • IWshRuntimeLibrary(Windows Script Host Object Model)を参照する
  • Windows APIのうちSHGetFileInfoメソッドを使う

今回はコンソールアプリで試すことにして準備としてはCOMのうち"Windows Script Host Object Model"ってのの参照を追加するように設定する。

設定できると、ソリューションエクスプローラーのプロジェクトのツリーの中で参照ってとこに"IWshRuntimeLibrary"ってのが追加される。

んで、実際のコードはこんな感じ。
まずは、Windows APIのSHGetFileInfoメソッドをインポートする定義はこんな感じ。

次にファイル情報を保持する構造体の定義はこんな感じ。
上で定義したメソッドの出力引数になる。

それから、エントリーポイントのコードはこんな感じ。

実行してみたらこんな感じ...今回はWordのファイルを試してみたんだけど、ちゃんと"Microsoft Word 文章"ってダイアログに表示されている文字列と同じ内容になっとる。

んまま、明日への自分へのメモってことで。

-C#
-, , , , , , , , , , , , , , ,

Copyright© tetsuyanbo , 2018 All Rights Reserved Powered by STINGER.