COMの呼び出し(Ver8.71対応版)
目次− COMの呼び出し
COM(Component Object Model)の呼び出しを扱うためのマクロの文があります。(V8.00以降)

createobject関数
オブジェクトを作成します。WSHのCreateObjectと似ています。

getobject関数
オブジェクトを取得します。WSHのGetObjectと似ています。

releaseobject文
オブジェクトを解放します。

callmethod_returnstr関数
メソッドを呼び、文字列を取得します。

callmethod_returnnum関数
メソッドを呼び、数値を取得します。

callmethod_returnobj関数
メソッドを呼び、オブジェクトを取得します。

callmethod文
メソッドを呼びます。

getpropstr関数
文字列プロパティを取得します。

getpropnum関数
数値プロパティを取得します。

getpropobj関数
オブジェクトプロパティを取得します。

setpropstr文
文字列プロパティを設定します。

setpropnum文
数値プロパティを設定します。

setpropobj文
オブジェクトプロパティを設定します。

member文,member関数
callmethod,callmethod_*等やgetprop*等と同じです。
メソッド,プロパティ,型がわからないときに使用できます。

keepobject文
マクロが終了した後も解放しないようにするかどうかを指示します。

getcollection関数
コレクションの操作をします。WSHのfor eachのようなことをします。

allowobjparam文(V8.20以降)
メソッドのパラメータをオブジェクトとして解釈したり、バイナリとして解釈したりを指示します。

エラーの取得
 文はresultが設定されますが、関数ではresultは設定されません。
 crateobject/getobject以外の関数では戻り値で成功したかどうかを知ることができないので、getresultexでエラー情報を得ることができるようになっています。


サンプル


//プログラム起動
//WSH(VBS)
//	Set objShell = WScript.CreateObject("WScript.Shell")
//	objShell.Run "notepad.exe"

#objShell = createobject("WScript.Shell");
callmethod #objShell, "Run", "notepad.exe";
endmacro;


//エクセルのセル内容取得 //WSH(VBS) // Set objExcel = WScript.GetObject("c:\folder\test.xls") // WScript.Echo objExcel.Sheets("Sheet1").Cells(1,1) #objXls = getobject("C:\\folder\\test.xls"); #objSheet = member(#objXls, "Sheets", "Sheet1" ); #objCells = member( #objSheet, "Cells" ); #objCell = member(#objCells,"Item", 1,1); message member( #objCell ); //デフォルトのプロパティ endmacro;
//Webページの内容を挿入 #obj = createobject("InternetExplorer.Application"); setpropnum #obj,"Visible",1; callmethod #obj, "Navigate", "http://hide.maruo.co.jp/"; while(1){ if( getpropnum(#obj,"Busy") == 0 ) break; sleep 100; } //#obj.Document.body.innerText $a=getpropstr(getpropobj(getpropobj(#obj,"Document"),"body"),"innerText"); insert $a; releaseobject #obj; endmacro;
//ディスク容量一覧 //WSH(VBS) // Set DiskSet = GetObject("winmgmts:").InstancesOf ("Win32_LogicalDisk") // for each Disk in DiskSet // WScript.Echo Disk.FreeSpace // next insert "\nディスク容量一覧\n"; #objWMI = getobject("winmgmts:"); #objDisks = member( #objWMI, "InstancesOf", "Win32_LogicalDisk"); while( 1 ) { #objDisk = getcollection( #objDisks ); if( #objDisk == 0 ) break; insert member( member( #objDisk, "Properties_", "Name" ) ) + member( member( #objDisk, "Properties_", "FreeSpace" ) ) + "\n"; } #objDisk = getcollection( #objDisks, 3 ); releaseobject(#objWMI); endmacro;
//秀丸パブリッシャーをCOMを介して起動 #obj = createobject("hmpv.MainCls"); if( #obj != 0 ) { message "秀丸パブリッシャーのバージョン\n" + member( #obj, "Version" ); question "印刷します"; if( result == yes ) { callmethod #obj, "ShowDialog", hidemaruhandle(0); } } endmacro;
// DExplore(SDKドキュメントなど)を呼び出す getsearch; $keyword = searchbuffer; //通常の方法で開いたドキュメントから、このアドレスをコピーしてここに書く。 $url = "ms-help://MS.MSSDK.1041"; #obj = getobject("","DExplore.AppObj"); if(#obj==0){ #obj = createobject("DExplore.AppObj"); } member #obj, "SetCollection", $url, ""; member #obj, "DisplayTopicFromF1Keyword", $keyword; member #obj, "SyncIndex", $keyword, 1; keepobject #obj; //解放しないようにしないとウィンドウが消える endmacro;

戻る