4.23.2012

HTA: Inconvenient of the HtmlDlgHelper.openfiledlg()'s return string

HTA: HtmlDlgHelper.openfiledlg() の戻り値をそのまま使ってはいけない

以前、HTAから「ファイルを開く」ダイアログを利用する方法を紹介した(http://mogproject.blogspot.jp/2012/04/launching-file-dialog-in-hta.html)が、
そのままでは問題があることがわかった。

MsgBox Len(HtmlDlgHelper()) のようなコードを実行すると、選択したファイルのパスに関わらず
その結果は常に 260 と表示される。(ただし、ダイアログがキャンセルされた場合は0)

この関数の結果として返る文字列は サイズ 260 の文字配列をそのままの形で受け取っているようで、
NULL文字(文字コード0)以降のメモリ内容もそのままコピーされているためだ。

あまり奇麗ではないが、対応するにはこのようなラッパーを作るしかない。

Function OpenFileDialog()
  Dim path
  path = HtmlDlgHelper.openfiledlg()
  If path <> "" Then OpenFileDialog = Left(path, InStr(path, Chr(0)) - 1)
End Function

参考:
http://cocococoa.dtiblog.com/blog-entry-19.html

0 件のコメント:

コメントを投稿