2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
無料ブログはココログ

« 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) »