その名の通り、(広い意味での)バッチ処理を支援する為のものです。
( PHP や ActivePerl からも簡単に実行できます )
また、結果を「SQLの窓 メソッド 」を使用して SQLの窓のリストビューを利用して表示する事もできます
さらに VBScript や Visual Basic でも可能ですが、便利なのにコードを書くのが面倒な処理をメソッドやプロパティで簡単に
実行できるように考慮しています
( ※ APIを使う特殊な処理は VBScript からは実行できないので、それ用のメソッドも用意しています)
オブジェクトは COM として作成されているのでインストールが必要です
SQLの窓パッケージの場合は、Tool\parts\BatchHelper\setup.wsf をエクスプローラからダブルクリックして実行して下さい。 バッチヘルパー単独パッケージの場合は、パッケージ内のsetup.wsf をエクスプローラからダブルクリックして実行して下さい。以下のオブジェクトも同時にインストールされます
if BatchHelper.MsgOkCancel( "処理を実行しますか?" ) then 処理 end if
Dim Entry,aRet Entry = "" Entry = Entry & "1|データベース|lightbox" Entry = Entry & ",2|ユーザ|user" Entry = Entry & ",3|パスワード|password" Ret = Lbox.GetTextList( "データベース接続", Entry ) if Ret <> "" then aRet = Split( Ret, vbTab ) Lbox.MsgOk(aRet(0) & "/" & aRet(1) & "/" & aRet(2) ) end if
Call BatchHelper.CopyToMemo( "AAAA" & vbCrLf ) Call BatchHelper.CopyToMemo( "BBBB" & vbCrLf ) Call BatchHelper.CopyToMemo( "CCCC" & vbCrLf )
'通常実行 Set WshShell = CreateObject("WScript.Shell") Call WshShell.Run( "notepad.exe" )
'実行の終了を待つ実行 Set WshShell = CreateObject("WScript.Shell") Call WshShell.Run( "notepad.exe",,true )
'標準出力取得 Set BatchHelper = CreateObject( "Lbox.BatchHelper" ) Set WshShell = CreateObject("WScript.Shell") Set objExec = WshShell.Exec( "cmd.exe /c dir" ) BatchHelper.MsgOk(objExec.StdOut.ReadAll)
STDMETHODIMP CBatchHelper::PostCommand( long hWnd, long MessageId ) { PostMessage( (HWND)(DWORD)hWnd, WM_COMMAND, MAKEWPARAM((WORD)MessageId,0), 0 ); return S_OK; }
long hWnd, long Msg, long wParam, long lParam
STDMETHODIMP CBatchHelper::PostMsg( long hWnd, long Msg, long wParam, long lParam ) { PostMessage( (HWND)(DWORD)hWnd, (UINT)Msg, (WPARAM)wParam, (LPARAM)lParam ); return S_OK; }
ファイルシステム関連の処理を行ないます
※ 以下に示されている書式は、Set Fsystem = CreateObject( "Lbox.Fsystem" ) が前提です
Text = Fsystem.GetTextFile("C:\TEMP\db1.mdb") if Fsystem.IsError( Text ) then BatchHelper.MsgOk(BatchHelper.RemoveLeft(Text,6)) end if
ADO を使用してデータベースにアクセスします
ADO を直接コーディングすればいろいろな事ができますが、結構面倒なのが実際です
Database オブジェクトは、本来必要な処理のみを限定して簡単に記述できるように設計しています
※ 以下に示されている書式は、Set Database = CreateObject( "Lbox.Database" ) が前提です
$NOCONSOLE $NORESULT Set Lbox = CreateObject( "Lbox.BatchHelper" ) Set Database = CreateObject( "Lbox.Database" ) -- Excel Ret = Database.Connect( 0, "$PGDIR\Tool\parts\商品分類.xls" ) if Ret <> "" then Lbox.MsgOk( Ret ) Wscript.Quit end if Result = Database.LoadSqlData( "select * from 商品分類マスタ" ) if Lbox.IsError( Result ) then Lbox.MsgOk( Result ) Wscript.Quit end if Call Lbox.EnumList( $HWND, Result ) Database.DisConnect
$NOCONSOLE $NORESULT Set Lbox = CreateObject( "Lbox.BatchHelper" ) Set Database = CreateObject( "Lbox.Database" ) -- MDB Ret = Database.Connect( 1, "$PGDIR\販売管理.mdb" ) if Ret <> "" then Lbox.MsgOk( Ret ) Wscript.Quit end if Result = Database.LoadSqlData( "select * from 商品分類マスタ" ) if Lbox.IsError( Result ) then Lbox.MsgOk( Result ) Wscript.Quit end if Call Lbox.EnumList( $HWND, Result ) Database.DisConnect
$NOCONSOLE $NORESULT Set Lbox = CreateObject( "Lbox.BatchHelper" ) Set Database = CreateObject( "Lbox.Database" ) -- MSDE2000 Ret = Database.Connect( 2, "SV\MSDE2000,lightbox,sa,password" ) if Ret <> "" then Lbox.MsgOk( Ret ) Wscript.Quit end if Result = Database.LoadSqlData( "select * from 商品マスタ" ) if Lbox.IsError( Result ) then Lbox.MsgOk( Result ) Wscript.Quit end if Call Lbox.EnumList( $HWND, Result ) Database.DisConnect
$NOCONSOLE $NORESULT Set Lbox = CreateObject( "Lbox.BatchHelper" ) Set Database = CreateObject( "Lbox.Database" ) -- MySQL Ret = Database.Connect( 3, "MySQL,lightbox,root," ) if Ret <> "" then Lbox.MsgOk( Ret ) Wscript.Quit end if Result = Database.LoadSqlData( "select * from 社員マスタ" ) if Lbox.IsError( Result ) then Lbox.MsgOk( Result ) Wscript.Quit end if Call Lbox.EnumList( $HWND, Result ) Database.DisConnect
$NOCONSOLE $NORESULT Set Lbox = CreateObject( "Lbox.BatchHelper" ) Set Database = CreateObject( "Lbox.Database" ) -- MSDE2000 Ret = Database.Connect( 2, "SV\MSDE2000,lightbox,sa,password" ) if Ret <> "" then Lbox.MsgOk( Ret ) Wscript.Quit end if bRet = Database.Query( "select * from 商品マスタ" ) Result = "" Do While bRet Result = Result & Database.GetText( "コード" ) Result = Result & vbTab & Database.GetText( "商品名" ) Result = Result & vbTab & Database.GetText( "単価" ) Result = Result & vbCrLf bRet = Database.Query() Loop Call Lbox.EnumList2( $HWND, Result ) Database.DisConnect
$NOCONSOLE $NORESULT Set Lbox = CreateObject( "Lbox.BatchHelper" ) Set Database = CreateObject( "Lbox.Database" ) -- MSDE2000 Ret = Database.Connect( 2, "SV\MSDE2000,lightbox,sa,password" ) if Ret <> "" then Lbox.MsgOk( Ret ) Wscript.Quit end if CodeList = "0001,0002,0003,0004" aList = Split( CodeList, "," ) For i = 0 to Ubound( aList ) bRet = Database.Query( _ "select * from 商品マスタ where コード = '" & aList(i) & "'" _ ) if not bRet then Database.Query( _ "insert into 商品マスタ (コード) values('" & aList(i) & "')" _ ) end if Next Result = Database.LoadSqlData( "select * from 商品マスタ" ) if Lbox.IsError( Result ) then Lbox.MsgOk( Result ) Wscript.Quit end if Call Lbox.EnumList( $HWND, Result ) Database.DisConnect
印刷処理を行ないます
※ 以下に示されている書式は、Set Prt = CreateObject( "Lbox.Prt" ) が前提です
StartPrint で設定されたページ情報を取得します
Windows ネットワークの資源への接続や解除を行います
※ 以下に示されている書式は、Set Wnet = CreateObject( "Lbox.Wnet" ) が前提です
FTP サーバに対する基本操作を行います
※ 以下に示されている書式は、Set Ftp = CreateObject( "Lbox.Ftp" ) が前提です
BatchHelper オブジェクトの Run メソッドや FindTopWindow メソッドで取得したウインドウハンドルを使用してウインドウに
対する基本的な処理を行ないます
※ 処理を行なう前に必ず hWnd プロパイティにウインドウハンドルをセットして下さい
※ 以下に示されている書式は、Set Win = CreateObject( "Lbox.Window" ) が前提です
外部 DLL を使用したオブジェクトです
圧縮・解凍に必要な DLL については その他のツール を参照して下さい
※ 以下に示されている書式は、Set Outer = CreateObject( "Lbox.OuterDll" ) が前提です
' ルーチェさん(http://www.ruche-home.net/) の imgctl が必要です Set Outer = CreateObject( "Lbox.OuterDll" ) strCurDir = WScript.ScriptFullName strCurDir = Replace( strCurDir, WScript.ScriptName, "" ) strImage = "b6art_sculptures008.jpg" ' 画像の情報を取得 ' 横幅,高さ,1ピクセル当たりのビット数 Result = Outer.IMGInfo( strCurDir & strImage ) Wscript.Echo Result ' 画像を横800にして、縦横比を保持して jpg で クオリティ 75% で保存 Result = Outer.IMGtoIMG( strCurDir & strImage, strCurDir & "convert.jpg",,75,,800 ) if Result <> "" then Wscript.Echo Result else Wscript.Echo "コンバーションに成功しました" end if