Win32::InternetShortcut

先日書いたWin32::IEFavoritesに同梱の::ItemをXSで焼き直し。これで単純なWin APIだけでは取得できない情報もとれてウマー……のはずだったんですが、とれそうでとれない情報があったり(たとえばこの辺参照)、とれてもあまり意味がない情報があったりで、手間をかけたわりには「なんだかなあ」という出来。

ま、そもそもC(もどき)なんて十年以上前にちょろっと触ったきりというレベルなのでコード自体「なんだかなあ」の連続なんですが、YAPC以来の懸案だったXSを書いてみるという目標を完遂するためにもひとまずアップしてみました。パッチはいつでも歓迎します。

http://search.cpan.org/dist/Win32-InternetShortcut/

ともあれ、懸案事項。

1) そもそもはサイトのタイトルをうまいこと抜けないかなあということで始めたんですが、プロパティまわりの情報はいまいち当てにならないことがわかったので、$self->basenameみたいなのも用意した方がいいのかな。
2) XSでWinのWCHARを扱う方法がいまいちわからず。そもそもWin内部のUnicodeって基本的にutf16だからPerlのutf8とはいっしょくたにできないよなあというあたりから、いまはとりあえずWideCharToMultiByteで情報をこそげてしまっているのですが、どうするのがいいんだろ。
3) 少なくともWin2KだとVisitCountはすなおに抜けないようなので、上で紹介したページを参考に抜くしかないんだろうなあと思いつつ、放置中。どこかにAPIとか転がっていればいいんですが。
4) XSのエラー処理ってどうするのがBetter Practiceなんだろう。必要な解放処理とかしたあとでcroakマクロで止めちゃうのがいちばん簡単そうですが。

Win32::IEFavoritesで採用するかどうかはもうしばらく様子見てから決めますです。