2011年10月06日


OO4O : GetXMLメソッドによる、XML 形式でのデータの取得

列の値が NULL の場合、要素として構成されません

GetXML の実行結果
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase("light/xe", "lightbox/lightbox", 0)
Set OraDynaset = OraDatabase.CreateDynaset("select * from 社員マスタ", 0)
OraDynaset.XMLEncodingTag = "UTF-8" 

XMLString = OraDynaset.GetXML( 2, 4 )

Wscript.Echo( XMLString )



posted by at 23:07 | Comment(0) | その他 | このブログの読者になる | 更新情報をチェックする



シャットダウンダイアログの表示


Set Shell = Wscript.CreateObject( "Shell.Application" )
Shell.ShutdownWindows()

Shell.ShutdownWindows method (Windows)


posted by at 22:48 | Comment(0) | Shell.Application | このブログの読者になる | 更新情報をチェックする


2010年07月30日


タスクマネージャの起動( taskmgr.exe の実行 )

VBScript から アプリケーションを起動する方法です。

2番目の引数で、ウインドウの状態やアクティブをコントロールし、3番目の引数で、同期・非同期をコントロールしますが、省略すると非同期になるので注意して下さい。コマンドプロンプトのコンソールウインドウを表示したく無い場合は、2番目の引数を 0 にします。

以下は「同期処理(プログラムの実行が終了するまでスクリプトの実行は中断)」です。( 3番目の引数は True )
Set WshShell = WScript.CreateObject("WScript.Shell")
Call WshShell.Run( "taskmgr.exe", , True )


0ウィンドウを非表示にし、別のウィンドウをアクティブにします。
1ウィンドウをアクティブにして表示します。ウィンドウが最小化または最大化されている場合は、元のサイズと位置に戻ります。アプリケーションでウィンドウを最初に表示するときには、このフラグを指定してください。
2ウィンドウをアクティブにし、最小化ウィンドウとして表示します。
3ウィンドウをアクティブにし、最大化ウィンドウとして表示します。
4ウィンドウを最新のサイズと位置で表示します。アクティブなウィンドウは切り替わりません。
5ウィンドウをアクティブにし、現在のサイズと位置で表示します。
6指定したウィンドウを最小化し、Z オーダー上で次に上位となるウィンドウをアクティブにします。
7ウィンドウを最小化ウィンドウとして表示します。アクティブなウィンドウは切り替わりません。
8ウィンドウを現在の状態で表示します。アクティブなウィンドウは切り替わりません。
9ウィンドウをアクティブにして表示します。ウィンドウが最小化または最大化されている場合は、元のサイズと位置に戻ります。アプリケーションで最小化ウィンドウを復元するときには、このフラグを指定してください。
10アプリケーションを起動したプログラムの状態に基づいて、表示状態を設定します。
関連する記事

タスクマネージャの起動( キーストロークを送る )


タグ:起動
posted by at 17:27 | Comment(0) | サンプル | このブログの読者になる | 更新情報をチェックする


2010年07月27日


タスクマネージャの起動( キーストロークを送る ) / OS バージョンの取得

タスクマネージャは、CTRL+SHIFT+ESC で起動するので、WScript.ShellSendKeys メソッド を使って起動させることができます。但し、WindowsXPでは、起動後アクティブにならないので、以下のような記述によって、Windows7 と WindowsXP で共用できるスクリプトとなります。

WMI は、OS のバージョンを取得する為に使用しています。
' GetOSVersion 内で使用しています
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

' キーストロークを Windows に送ります
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys "^+({ESC})"
if GetOSVersion() < 6 then
	WScript.Sleep 500
	WshShell.AppActivate "Windows タスク マネージャ"
end if

Function GetOSVersion()

	Dim colTarget,str,aData,I,nTarget

	Set colTarget = objWMIService.ExecQuery( _
		 "select Version from Win32_OperatingSystem" _
	)
	For Each objRow in colTarget
		str = objRow.Version
	Next

	aData = Split( str, "." )
	For I = 0 to Ubound( aData )
		if I > 1 then
			Exit For
		end if
		if I > 0 then
			nTarget = nTarget & "."
		end if
		nTarget = nTarget & aData(I)
	Next

	GetOSVersion = CDbl( nTarget )

End Function


タスクマネージャを単純に起動したい場合は、taskmgr.exe を実行するだけでかまいません。このサンプルは SendKeys メソッドでこのような事が可能である事を示す為の一例です。



posted by at 11:19 | Comment(0) | サンプル | このブログの読者になる | 更新情報をチェックする


2010年07月18日


VBScript でバッチ処理する時の選択肢 : .VBS でやるか .WSF でやるか

.VBS

[長所] : すぐコードを書き始められるので簡単です。
[短所] : 外部のコードを使え無いので、全て一つのテキストに書く必要があります。

.WSF

[長所] : 外部ファイルをローカルやWEBから取り込む事ができます。これは強力です。
     ( さらに、ソース内にテキストデータを持つ事ができます。)
[短所] : フォーマットが決まっているので、雛型が必要です。
     ( 殆ど短所とは言えない内容です。)

それでも、すぐ簡単にテストしたい場合は、.VBS で書く事が多いですが、正式に運用に使うような場合はやはり .WSF にします。

SCRIPT 要素内に VBScript のコードを記述します。SCRIPT 要素には、HTML 上で書くのと同じ src 属性が使えますので、それを使って関数や定義や処理を外部に置いて利用します

以下は、.WSF の簡単な雛型です。

skeleton.wsf
<JOB>
<COMMENT>
********************************************
※ COMMENT 要素内はコメントです
※ WScript.Shell は、良く使う基本的なオブジェクトです
※ Scripting.FileSystemObject はテキストファイル用です
********************************************
</COMMENT>

<OBJECT id="WshShell" progid="WScript.Shell" />
<OBJECT id="Fso" progid="Scripting.FileSystemObject" />

<SCRIPT language="VBScript">
'*******************************************
' 処理開始
'*******************************************

' ソース内テキストデータの表示
Wscript.Echo RegTrim(GetResource("myTextData"))

' GUI 
if vbCancel = MsgBox( "処理が終了しました   ", vbOKCancel , "サンプル" ) then
	Wscript.Echo "キャンセルされました"
end if

'*******************************************
' 文字列前後の漢字スペースを含むホワイトスペースの削除
'*******************************************
Function RegTrim( strValue )

	Dim regEx, str

	Set regEx = New RegExp
	regEx.IgnoreCase = True
	regEx.Pattern = "^[ \s]+"
	str = regEx.Replace( strValue, "" )
	regEx.Pattern = "[ \s]+$"
	RegTrim = regEx.Replace( str, "" )

End Function
</SCRIPT>

<COMMENT>
********************************************
 ソース内テキストデータ
********************************************
</COMMENT>
<RESOURCE id="myTextData">
<![CDATA[
ここにテキストデータを用意します
]]>
</RESOURCE>

</JOB>

厳密に言うと XML 要素に関してはいろいろあるのですが、説明し出すとよけい解りにくくなります。長年動いていて、問題の出にくい雛型であるというふうに軽い認識でいいと思います。

※ Microsoft のドキュメント見ると、必ず混乱するので無視して下さい。


タグ:wsf WSH 正規表現
posted by at 19:51 | Comment(0) | 基本事項 | このブログの読者になる | 更新情報をチェックする