« AcroPDFでPDFファイルを開く、閉じるには? | トップページ | IE8で、<input type=file>の.valueがc:\fakepath\filenameを返す。(その2) »

2009年5月27日 (水)

IE8で、<input type=file>の.valueがc:\fakepath\filenameを返す。

WSHからIEを使って、ファイル選択ダイアログを出す方法が使えなくなりました。

これは、IE8でセキュリティが強化されたせいです。なので、セキュリティを緩めれば回避できますが。

[インターネットオプション][セキュリティ][インターネット][レベルのカストマイズ]
「サーバにファイルをアップロードするときにローカルディレクトリのパスを含める」
を「有効にする」。

セキュリティを緩めないで回避することができるか?

IEでも頑張ればできます。が、HTAならセキュリティ制約を受けません。なので、WSHからmshta.exeを使用する方法が簡単です。

Set wShell=CreateObject("WScript.Shell")
Set oExec=wShell.Exec("mshta.exe ""about:<input type=file id=FILE><script>FILE.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);</script>""")
MsgBox oExec.StdOut.ReadAll

バッチファイルでも、

for /f "delims=" %%I in ('mshta.exe "about:<input type=file id=FILE><script>FILE.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);</script>"') do echo %%I

« AcroPDFでPDFファイルを開く、閉じるには? | トップページ | IE8で、<input type=file>の.valueがc:\fakepath\filenameを返す。(その2) »