SQLの窓

2011年04月04日


IE限定。信頼するサイトのページをボタンから印刷プレビュー表示する


イントラネット用に 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>




タグ:IE VBScript
posted by lightbox at 2011-04-04 15:25 | VBS + インターネット | このブログの読者になる | 更新情報をチェックする
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり