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
0 件のコメント:
コメントを投稿