2011年10月11日


MDB 接続より他のDB(MySQL)へテーブルをコピーする

MDBでは SQL の select * into テーブル名 from テーブル名が使用できます。from の後のテーブルを MDB のテーブルとして into の後のテーブルに MySQLを指定しています。

strConnectMySQL の書き方は、社員マスタという新しいテーブルですが、修飾している文字列が接続情報を表します
' ************************************************
' スクリプトが存在するディレクトリ
' ************************************************
Set Fso = CreateObject( "Scripting.FileSystemObject" )

strCurPath = WScript.ScriptFullName
Set obj = Fso.GetFile( strCurPath )
Set obj = obj.ParentFolder
strCurPath = obj.Path

' ************************************************
' 処理用文字列設定
' ************************************************
' MDB の接続文字列
strConnectMdb = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strCurPath & "\販売管理C.mdb" & ";"

' Microsoft の MySQL 5.1用 ODBC ドライバの接続文字列
strConnectMySQL = _
	"[ODBC;Provider=MSDASQL" & _
	";Driver={MySQL ODBC 5.1 Driver}" & _
	";SERVER=localhost" & _
	";DATABASE=lightbox" & _
	";UID=root" & _
	";PWD=password" & _
	";Charset=sjis" & _
	";].社員マスタ"

' ************************************************
' 初期処理
' ( MDB 接続 )
' ************************************************
Set Cn = CreateObject("ADODB.Connection")
Cn.Open strConnectMdb

' ************************************************
' SQL の準備
' ************************************************
Query = "select * into " & strConnectMySQL & " from 社員マスタ"
MsgBox(Query)

' ************************************************
' SQL の実行
' ************************************************
Cn.Execute Query

' ************************************************
' 接続解除
' ************************************************
Cn.Close()



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


2011年10月09日


WMI クラスの情報の一覧 : プリンタ情報

自宅のプリンタなので、二つきりでかつたいした内容ではありませんが
それでも大量の情報が表示されます。

コマンドプロンプトで、cscript prtinfo.vbs > result.txt とするのが
いいと思います

※ obj.CancelAllJobs() で、そのプリンタの印刷キューを削除する事ができます
※ obj.SetDefaultPrinter() で、デフォルトのプリンタに設定できます


Crun は、間違って Wscript で実行するとプロセスを終了させなければ
いけなくなるのでセッティングしています。

実行結果
WMI : プリンタ一覧

prtinfo.vbs
Crun()

strComputer = "."  
Const Impersonate = 3

' ユーザとパスワードは必要な時にセットします
Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objLocator.ConnectServer( _
		strComputer, _
		"root\cimv2", _
		strUser, _
		strPassword _
	)
objWMIService.Security_.ImpersonationLevel = Impersonate

Set colInstalledPrinters = objWMIService.ExecQuery _  
    ("Select * from Win32_Printer")  

For Each obj in colInstalledPrinters
	Wscript.Echo "■■■[" & obj.Name & "]■■■"
	For Each Prop in obj.Properties_
		if isArray( Prop.Value ) then
			Wscript.Echo "【" & Prop.Name & "】"
			For Each ar in Prop.Value
				Wscript.Echo "  --> " & ar
			Next
		else
			Wscript.Echo "【" & Prop.Name & "】 : " & Prop.Value
		end if
	Next
	Wscript.Echo vbCrLf
Next

Function Crun()

	Set WshShell = CreateObject( "WScript.Shell" )

	' フルパス
	strPath = WScript.FullName
	strTarget = Right( strPath, 11 )
	strTarget = Ucase( strTarget )

	' CSCRIPT.EXE で無い場合
	if strTarget <> "CSCRIPT.EXE" then
		' 自分自身ののフルパス
		strMyPath = WScript.ScriptFullName
		strParam = " "
		' 引数を全て読みだして、スペースが含まれていた場合は再度引き渡す
		' 為に " で囲み直しています
		For I = 0 to Wscript.Arguments.Count - 1
			if instr(Wscript.Arguments(I), " ") < 1 then
				strParam = strParam & Wscript.Arguments(I) & " "
			else
				strParam = strParam & """" & Wscript.Arguments(I) & """ "
			end if
		Next
		Call WshShell.Run( "cscript.exe """ & strMyPath & """" & strParam, 3 )
		WScript.Quit

	end if

End Function

関連する記事

WMI Query ( HTML アプリケーション )


タグ:WMI
posted by at 12:17 | Comment(0) | WMI | このブログの読者になる | 更新情報をチェックする



指定したプロセスを強制一括終了させるスクリプト( WMI + taskkill )

プロセスの終了メソッドは WMI にもあるのですが、セキュリティの問題で
なんでもかんでも終了できるものでは無いので、taskkill で強制終了させ
ています。

その際に同じアプリケーションでも全て終了できるように、WMI で一覧を
取得する条件を作成して、そのプロセスID で終了させます
<job>
<object id="WshShell" progid="WScript.Shell" /> 
<script language=VBScript>
' ***********************************************************
' 処理開始
' ***********************************************************
' ソース内テキストデータの表示
Dim str : str = RegTrim(GetResource("myTextData"))
Dim arr : arr = Split(str,vbCrLf)

Dim cond : cond = ""
For I = 0 to UBound(arr)
	if cond <> "" then
		cond = cond & " or Name = '" & arr(I) & "'"
	else
		cond = cond & " Name = '" & arr(I) & "'"
	end if
Next

ServiceString = "winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2"
Set objWMIService = GetObject( ServiceString )

Query = "Select * from Win32_Process where " & cond
Set Processes = objWMIService.ExecQuery( Query )
For each Process in Processes 

	Wscript.Echo  Process.ProcessId & " : " & Process.Name & " を強制終了します"
	Call WshShell.Run("taskkill /F /PID " & Process.ProcessId, 0 )

Next

' ***********************************************************
' 文字列前後の漢字スペースを含むホワイトスペースの削除
' ***********************************************************
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[
calc.exe
notepad.exe
TeraPad.exe
]]>
</resource>

</job>



タグ:WMI プロセス
posted by at 01:55 | Comment(0) | WMI | このブログの読者になる | 更新情報をチェックする


2011年10月08日


RegExp(正規表現)オブジェクトで、iniファイル(初期化ファイル)の読み出し

ini ファイルのフォーマットは単純で、データは[]で挟まれた文字列をセクション
としてエリアを決定して、その次に現れる1行単位に a=b という形で一つのデータ
が置かれます。

\[セクション\][^\[]+?a\s*=\s*([^\[]+?)\n

このパターンのサブマッチ文字列が b になります
strSection = "mail function"
strEntry = "smtp_port"

Dim Fso : Set Fso = CreateObject( "Scripting.FileSystemObject" )
strPath = "C:\php\php.ini-development"

' テキストファイル一括入力 --> 配列化
Dim obj : Set obj = Fso.OpenTextFile( strPath, 1 )
' テキスト全体を取得
TextData = obj.ReadAll()
obj.Close()

Dim regEx : Set regEx = New RegExp
regEx.Pattern = "\["&strSection&"\][^\[]+?"&strEntry&"\s*=\s*([^\[]+?)\n"
' 大文字と小文字を区別しない
regEx.IgnoreCase = True
' 文字列全体を検索
regEx.Global = True
' 検索を実行
Set Matches = regEx.Execute(TextData)
'() 内のサブマッチ文字列を取得
For Each Match in Matches
	Wscript.Echo Match.SubMatches(0)
Next


テストに使った php.ini-development

[Syslog]
; Whether or not to define the various syslog variables (e.g. $LOG_PID,
; $LOG_CRON, etc.).  Turning it off is a good idea performance-wise.  In
; runtime, you can define these variables by calling define_syslog_variables().
; http://php.net/define-syslog-variables
define_syslog_variables  = Off

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = me@example.com

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path =

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =



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



VBScript だけで16進数ダンプをコンソールに表示する



VBScript(WSH)は、Wscript で実行されると、標準出力を使え無いので
長いデータを表示する事にはむいていません。ですから、Cscript で実行
しなおす処理が必要になります
' ****************************************************
' 少なくともファイルを引数に一つ指定します
' ****************************************************
if Wscript.Arguments.Count = 0 then
	Wscript.Echo "ファイルを指定して下さい"
	Wscript.Quit
end if

Dim str : str = WScript.FullName
str = Right( str, 11 )
str = Ucase( str )

' ****************************************************
' Wscript で実行された場合は、Cscript で実行しなおし
' 但しその場合は一ページ表示毎に停止します
' ****************************************************
Set WshShell = CreateObject( "WScript.Shell" )
if str <> "CSCRIPT.EXE" then
	Call WshShell.Run( _
		"cmd.exe /c cscript.exe " & _
		"""" & WScript.ScriptFullName & _
		""" """ & Wscript.Arguments(0) & """ | more", _
		3 )
	WScript.Quit
end if

' ****************************************************
' ファイルを16進数でダンプします
' ****************************************************
Dim Fs,Stream
Dim InFile
Dim Kana
Dim KjFlg
Kana = Array( _
"。","「","」","、","・","ヲ","ァ","ィ","ゥ","ェ","ォ","ャ","ュ","ョ","ッ", _
"ー","ア","イ","ウ","エ","オ","カ","キ","ク","ケ","コ","サ","シ","ス","セ","ソ", _
"タ","チ","ツ","テ","ト","ナ","ニ","ヌ","ネ","ノ","ハ","ヒ","フ","ヘ","ホ","マ", _
"ミ","ム","メ","モ","ヤ","ユ","ヨ","ラ","リ","ル","レ","ロ","ワ","ン","゙","゚" )

Set Fs = CreateObject( "Scripting.FileSystemObject" )
Set Stream = CreateObject("ADODB.Stream")

InFile = WScript.Arguments(0)

Dim LineBuffer,DispBuffer,CWork,nCnt,strBuff,i,j

if not Fs.FileExists( InFile ) then
	Wscript.Echo "ファイルが存在しません"
	Wscript.Quit
end if

' ------------------------------------------------------
' Stream のオープン
Stream.Open
 
' ------------------------------------------------------
' Stream タイプの指定
Stream.Type = 1		' StreamTypeEnum の adTypeBinary
 
' ------------------------------------------------------
' 既存ファイルの内容を Stream に読み込む
Stream.LoadFromFile InFile
 
' ------------------------------------------------------
' バイナリ型の Stream オブジェクトからを読み取って加工
Bcnt = 0
nCnt = 0
KjFlg = ""

Do while not Stream.EOS

	if ( nCnt MOD 16 ) = 0 then
		Wscript.Echo "          0  1  2  3  4  5  6  7" _
		& "  8  9  A  B  C  D  E  F"
		Wscript.Echo "--------------------------------" _
		& "------------------------------------------"
	end if

	' 16 バイトの読込
	LineBuffer = Stream.Read(16)

	strBuff = ""
	For i = 1 to LenB( LineBuffer )
		CWork = MidB(LineBuffer,i,1)
		Cwork = AscB(Cwork)
		Cwork = Hex(Cwork)
		Cwork = Ucase(Cwork)
		Cwork = Right( "0" & Cwork, 2 )
		DispBuffer = DispBuffer & Cwork & " "
		strBuff = strBuff & CharConv( Cwork )
	Next

	Wscript.Echo _
		Right( _
			"00000000" & Ucase(Hex( nCnt * 16 )), 8 _
		) & " " & _
		Left(DispBuffer & String(49," "), 49 ) & strBuff
	DispBuffer = ""

	nCnt = nCnt + 1
 
Loop
 
' ------------------------------------------------------
' Stream を閉じる
Stream.Close

Set Stream = Nothing
Stream = Empty
Set Fs = Nothing
Fs = Empty

' ****************************************************
' 生データのテキスト
' ****************************************************
function CharConv( HexCode )

	Dim nCode

	nCode = Cint( "&H" & HexCode )

	if KjFlg = "" then
		if &H81 <= nCode and nCode <= &H84 or _
			&H88 <= nCode and nCode <= &H9f or _
			&HE0 <= nCode and nCode <= &HEA then
			KjFlg = HexCode
			CharConv = ""
			Exit Function
		end if
	else
		if HexCode <> "00" then
			KjFlg = KjFlg & HexCode
			CharConv = Chr( Cint( "&H" & KjFlg ) )
		else
			CharConv = ".."
		end if
		KjFlg = ""
		Exit Function
	end if

	if 0 <= nCode and nCode <= &H1F then
		CharConv = "."
	end if
	if &H20 <= nCode and nCode <= &H7E then
		CharConv = Chr(nCode)
	end if
	if &H7F <= nCode and nCode <= &HA0 then
		CharConv = "."
	end if
	if &HA1 <= nCode and nCode <= &HDF then
		CharConv = Kana(nCode-&HA1)
	end if
	if &HE0 <= nCode and nCode <= &HFF then
		CharConv = "."
	end if

end function



posted by at 15:52 | Comment(0) | ツール | このブログの読者になる | 更新情報をチェックする



指定したキーでレジストリエディタを開く

レジストリエディタは終了する時に直前に表示していた場所をレジストリに
登録するので、事前にその値を変更しておいてから開くとその場所を意図的
に開く事ができます。

Windows Vista より保存場所の名前が変わっているので、OS バージョンの
チェックが必要となっています。

また、同時に二つのレジストリエディタは実行できないので、既に実行中の
場合は終わらせる必要があります。その際表示位置やサイズも記録するには、
一度アクティブにする必要があるようなので対応しています。
if Wscript.Arguments.Count <> 0 then
	strParam = Wscript.Arguments(0)
else
	strParam = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft"
end if

' レジストリ書き込み用
Set WshShell = CreateObject( "WScript.Shell" )
' WMI用
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

' レジストリエディタが最後に開いていたキーの登録を行います
strPath = "Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\LastKey"
if GetOSVersion() >= 6 then
	strRegPath = "コンピュータ\" & strParam
else
	strRegPath = "マイ コンピュータ\" & strParam
end if

' 既に regedit が実行中の場合はいったん終了させます
Set colProcessList = objWMIService.ExecQuery _ 
	("Select * from Win32_Process Where Name = 'regedit.exe'") 
For Each objProcess in colProcessList
	' 最後のウインドウの位置とサイズを保存する為の終わらせ方
	WshShell.AppActivate("レジストリ エディタ")
	Wscript.Sleep(500)
	WshShell.SendKeys ("%{F4}")
	Wscript.Sleep(500)
	' 上記終わらせ方が失敗した時の強制終了
	on error resume next
	objProcess.Terminate() 
	on error goto 0
Next 

WshShell.RegWrite "HKCU\" & strPath, strRegPath, "REG_SZ"

' レジストリエディタを起動します
Call WshShell.Run( "regedit.exe" )
' レジストリエディタが終わるまで待つ場合は以下のようにします
' Call WshShell.Run( "regedit.exe", , True )

' **********************************************************
' OS バージョンの取得
' **********************************************************
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



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



Windows のありものだけで行う「ZIP圧縮」

■ 前提条件

  cscript.exe で実行される事

使用されるオブジェクト

  1) Shell.Application : フォルダ選択 / ファイルの圧縮

  2) Scripting.FileSystemObject : 空のzip書庫作成

  3) WScript.Shell : カレントディレクトリ取得

  4) WMI : プロセスの変化の非同期監視処理

厳密な処理ではありませんが、VBScript のテクニカルな処理のヒント集のような
ものです。特に、WMI では一般的に知られていない処理が大量にあり、これはその
ほんの一つのサンプルです
str = WScript.FullName
str = Right( str, 11 )
str = Ucase( str )
if str <> "CSCRIPT.EXE" then
	Wscript.Echo "cscript.exe で実行して下さい"
	Wscript.Quit
end if

' **********************************************************
' 必要な基本オブジェクト
' **********************************************************
Set Shell = WScript.CreateObject("Shell.Application")
Set Fso = WScript.CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")

' **********************************************************
' 圧縮フォルダ選択
' **********************************************************
Set objFolder = Shell.BrowseForFolder( 0, "フォルダ選択", 11, 0 )
if objFolder is nothing then
	WScript.Quit
end if
if not objFolder.Self.IsFileSystem then
	WScript.Echo "ファイルシステムではありません"
	WScript.Quit
end if

' **********************************************************
' 空の zip 書庫作成
' **********************************************************
Set Handle = Fso.CreateTextFile( "test.zip", True )
EmptyData = Chr(&H50) & Chr(&H4B) & Chr(&H5) & Chr(&H6)
EmptyData = EmptyData & String( 18, Chr(0) )
Handle.Write EmptyData
Handle.Close

' **********************************************************
' 圧縮
' **********************************************************
strTargetZipFile = WshShell.CurrentDirectory & "\test.zip"
Set objTargetFolder = Shell.NameSpace( strTargetZipFile )

' 非同期の圧縮処理となります
Call objTargetFolder.CopyHere( objFolder.Items(), 0 )


' **********************************************************
' WMI 非同期イベントの監視
' **********************************************************
Set SINK = WScript.CreateObject("WbemScripting.SWbemSink","SINK_")
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
objWMIService.ExecNotificationQueryAsync _
 SINK, _
 "SELECT * FROM  __InstanceOperationEvent  WITHIN 1 " & _
 "WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.Name = 'explorer.exe'"

Wscript.Echo "ZIP保存処理を開始します(★終了するまで何も触らないで下さい)"
' **********************************************************
' 3秒毎に処理が終了したか判断して終了します
' **********************************************************
Do
	sv_counter = counter
	WScript.Sleep 3000
	if sv_counter = counter then
		Wscript.Echo "処理を終了します"
		Wscript.quit
	end if
Loop

' **********************************************************
' この処理は、explorer.exe の動作中に呼び出されます
' **********************************************************
Sub SINK_OnObjectReady(objLatestEvent, objAsyncContext)

	counter = counter + 1
	Wscript.Echo "処理中 : " & objLatestEvent.TargetInstance.Name

End Sub



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


2011年10月07日


SHIFT_JIS 文字列の Base64 変換 : VB.net で作成した DLL を COM として使用する

1) PATHの追加

%windir%\Microsoft.NET\Framework\v2.0.50727
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin

2) キーペアの作成

sn -k lightbox.snk 

3) dll のビルド

vbc /target:library lbox4vbs.vb

4) lbox4vbs.vb
Imports System
Imports System.Text
Imports System.Reflection

<Assembly: AssemblyKeyFile("lightbox.snk")>
Namespace Winofsql

	Public Interface Ilbox4vbs

		Function Base64_sjis( str As String ) As String

	End Interface

	Public Class lbox4vbs
		Implements Ilbox4vbs

		Public Function Base64_sjis( str As String ) As String _
			Implements Ilbox4vbs.Base64_sjis

			Return Convert.ToBase64String(Encoding.GetEncoding("Shift_JIS").GetBytes(str))

		End Function

	End Class

End Namespace

5) COM として登録

regasm lbox4vbs.dll /tlb:lbox4vbs.tlb /codebase 

6) VBScript から実行(test.vbs)
Set obj = WScript.CreateObject( "Winofsql.lbox4vbs" )

Wscript.Echo "gqCCooKkgqaCqEFCQ0Q="
Wscript.Echo obj.Base64_sjis("あいうえおABCD")



タグ:Base64 VB.NET com
posted by at 22:22 | Comment(0) | その他 | このブログの読者になる | 更新情報をチェックする



JavaScriptのライブラリ( crypto-js )を利用して、UTF-8 限定の Base64エンコード

crypto-js - Google Project Hosting

そのままでは、ブラウザ上で使う事が前提になっているので、window オブジェクトを
通常の変数に差し替える必要があります。

crypto-min.js をテキストエディタで開いて、window.Crypto を Crypto に変更します。
その後、先頭に以下のコードを付加すると使用できるようになります。

var Crypto;

( ▼ かなり前のバージョンの画像ですが、現在も同じです )
Crypto

データの処理には、charCodeAt を使っていますが、JavaScript の環境ではかなり
面倒な事をしないと UTF-8 以外のキャラクタセットは難しいと思います。どうしても
必要な場合は、VB または C# で作成して COM として公開する必要があると思います。
( 環境が限定されますが、VBScript : ネイティブ Base64 エンコード でも可能です )

base64.wsf
<job>
<script language="JavaScript" src="crypto-min.js"></script> 
<script language="JavaScript"> 
// *********************************************************
// crypto-js のラッパー
// *********************************************************
function bytesToBase64(data) {
	return Crypto.util.bytesToBase64(data); 
}

function stringToBytes(data) {
	return Crypto.charenc.UTF8.stringToBytes(data)
}
</script>

<script language="VBScript">
' *********************************************************
' VBScript から呼び出す為の関数
' *********************************************************
Function ConvertBase64(data)

	ConvertBase64 = bytesToBase64(stringToBytes(data))

End Function

' crypto-js
Wscript.Echo ConvertBase64( "あいうえおABCD" )

' 以降は CAPICOM
Set CAPIUtil = WScript.CreateObject( "CAPICOM.Utilities" )

Set Stream = CreateObject("ADODB.Stream")
Set StreamBin = CreateObject("ADODB.Stream")

Stream.Open
Stream.Charset = "utf-8"
Stream.WriteText "あいうえおABCD"
Stream.Position = 0

' バイナリで開く
StreamBin.Open
StreamBin.Type = 1

' テキストをバイナリに変換
Stream.CopyTo StreamBin
Stream.Close

' 読み込みの為にデータポインタを先頭にセット
StreamBin.Position = 0

' 変換
StreamBin.Read(3) ' BOM を取り去る
strBinaryString = CAPIUtil.ByteArrayToBinaryString( StreamBin.Read ) 
strBase64 = CAPIUtil.Base64Encode( strBinaryString ) 

' 表示
Wscript.Echo strBase64

</script>
</job>


CAPICOM : Utilities object (Windows)
CAPICOM : ダウンロード詳細 Platform SDK Redistributable
CAPICOM is a 32-bit only component that is available for use in the
following operating systems: Windows Server 2008, Windows Vista,
Windows XP,and Windows 2000. Instead,
use the .NET Framework to implement security features
タグ:javascript Base64
posted by at 21:18 | Comment(0) | JavaScript利用 | このブログの読者になる | 更新情報をチェックする



ImageMagick で画像の切り抜きとフォーマット変換

ImageMagick (COM) のダウンロード
( ImageMagick-6.7.2-10-Q16-windows-static.exe )

imagemagick_元画像.png


COM は、一番下のチェックボックスが必要です

+0+0 は切り抜き画像の開始位置です。
省略すると自動的に分割された画像が作成されます。
Set imagick = Wscript.CreateObject("ImageMagickObject.MagickImage")

Call imagick.Convert( _
	"imagemagick_元画像.png", _
	"-crop","100x100+0+0", _
	"-quality","40", _
	"imagemagick_切り抜き1.jpg" )

Call imagick.Convert( _
	"imagemagick_元画像.png", _
	"-quality","85", _
	"imagemagick_変換.jpg" )

Call imagick.Convert( _
	"imagemagick_元画像.png", _
	"-crop","200x100+50+50", _
	"imagemagick_切り抜き2.png" )

imagemagick_切り抜き1.jpg



imagemagick_切り抜き2.png




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