イントラネット用に IE6 のころから利用していた方法ですが、IE9 できちんと動くかどうかをテストしました。
IE は、スクリプトとして JavaScript 以外に VBScript を動かす事ができます。このへんがそもそも、他のブラウザと根本的に違うところで、イントラネット + 業務アプリケーションが IE 限定になる理由でもあります。
JavaScript でオブジェクトの処理を書くと、どういうわけかバグがあってうまく動かない事が過去に多かったので、誰も JavaScript を使わないのです。
CreateObject("InternetExplorer.Application") で、インターネットエクスプローラオブジェクトを作成して、現在のページをナビゲートして、その内容を印刷プレビューで表示します。
こういってしまうと簡単ですが、実際使えるものにする為に、二段階のタイマーを使っています。また、フォーカスの処理を行う為に、WScript.Shellを使っていますので、経験無い方には全くなんの事が解らない特殊なコードになっていますが、Excel との連携では似たような事は昔から良く行われています。
通常のインターネット では、セキュリティの設定で、危険な ActiveXは、無効になっていますが、社内であれば別に気にする事は無いので ActiveXを有効にして、OS の恩恵を業務で役立てているわけです。
この方法の良いところは、印刷時のみページをカスタマイズ可能であるというところで、ここでは最も基本的なボタンの非表示を印刷時に行っています。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=EUC-JP">
<style type="text/css">
.<?= $_GET['print_preview'] ?> {
display:none;
}
</style>
<script language="VBScript">
Dim WshShell
Set WshShell = CreateObject( "WScript.Shell" )
Dim Ie
Const OLECMDID_PRINTPREVIEW = 7
Const OLECMDEXECOPT_DODEFAULT = 0
'************************************
' プレビュー開始
'************************************
Function DoPrintPreview()
if not IsEmpty( Ie ) then
Ie.Quit()
end if
Set Ie = CreateObject("InternetExplorer.Application")
Ie.Visible = True
Ie.Navigate(window.location&"?print_preview=preview")
TimerPreview()
End Function
'************************************
' ドキュメントロード完了待ち処理
'************************************
function TimerPreview()
if Ie.Busy then
Call window.setTimeout( _
"Call TimerPreview()", _
100, _
"VBScript" _
)
else
Call Ie.ExecWB( _
OLECMDID_PRINTPREVIEW, _
OLECMDEXECOPT_DODEFAULT _
)
Call window.setTimeout( _
"Call TimerFocus()", _
500, _
"VBScript" _
)
end if
end function
'************************************
' フォーカス取得
'************************************
function TimerFocus()
Call WshShell.AppActivate( "印刷プレビュー" )
Ie.Visible = False
end function
</script>
<script for="window" event="onunload" language="VBScript">
if not IsEmpty( Ie ) then
Ie.Quit()
end if
</script>
</head>
<body>
<input class="preview" type='button' value="印刷プレビュー" onclick='Call DoPrintPreview()' language="VBScript">
<br><br>
<img src="http://lh5.googleusercontent.com/_IzfbcNjqGuE/TZlg5usBDjI/AAAAAAAACX0/v0Q8yvsp9os/ie_trust_site.png" style='border:solid 0px #000000' />
</body>
</html>
VBScriptドキュメント
|
|
【VBS + インターネットの最新記事】
- VBScript / JScript: Windows標準のオブジェクト( CDO.Message ) と ロリポップメールを使ってメール送信
- VBScriptの関数定義をWEB上に置いて、Msxml2.ServerXMLHTTP で読みだして PCで使用する
- VBScript : Seesaa ブログのエクスポートを呼び出して全てをバックアップするスクリプト
- WSF : VBScript の 関数定義を WEB 上に置いて PC で使用する
- VBScript を使って HTTPプロトコルで PHP へファイルをアップロードする方法
- VBscript(または JScript) で簡単にバイナリファイルをアップロードする
- VBScript で Seesaaブログへ禁止ワード一括登録( アップロード )
- VBScript で半角カナから全角カナへ変換するのに、php の mb_convert_kana を呼び出す
- VBScript : URLEncode( OAuth 用 rfc3986 )
- VBS : Textt サービスに書き込んだテキストを PC にダウンロード(配布)する
【VBScript関連のカテゴリ】






