VBScript/JScriptなどからCOM経由でGrowlするためのCOMコンポーネントをリリースしました
とりあえずGNTP/COMと呼んでます。
http://github.com/snaka/GNTPCom
中身は、mattnさん作の gntp-send ライブラリを呼び出しているだけの単純なラッパーです。
VBScriptから使ってみる
以下のようなコードで呼び出せます。
set g = CreateObject("GNTPCom.Growler") g.Init "Sample", Array("notify", "warn", "error") g.Notify "notify", "Greeting", "Hello, from VBScript!" set g = Nothing
JScriptから使ってみる
配列の扱いがVBScriptと違っているため、ちょっと工夫が必要です。
var g = new ActiveXObject("GNTPCom.Growler"); g.Init("JScript sample", SA("notify", "warn")); g.Notify("notify", "Greeting", "Hello, from VBScript!"); // Utility for create SAFEARRAY object function SA() { var temp = new ActiveXObject("Scripting.Dictionary"); for (var i = 0; i < arguments.length; i++) temp.add(i, arguments[i]); return temp.Items(); }
参考となった書籍/サイトなど
C++でプログラムするのがほとんど初めてだったので、いろいろ苦労した。
以下、参考となった書籍およびサイトについて。
- Amazon.co.jp: C++プログラミング入門: グレゴリー サティア, ダウグ ブラウン, Gregory Satir, Doug Brown, 望月 康司, 谷口 功: 本
- まずはC++の基本ということで読んだ本。Cはある程度知っているけどC++はぜんぜんっていうレベルだった自分にとって、ちょうどいいくらいの内容でした。
- Amazon.co.jp: ATL COMプログラミング—ATLとVisualC++で作る高性能COMコンポーネント (Programmer’s SELECTION): リチャード グリムス, ジョージ ライリー, アレックス ストックトン, ジュリアン テンプルマン, Richard Grimes, George Reilly, Alex Stockton, Julian Templeman, 田中 正造: 本
- 翻訳のせいなのか自分の理解が浅いせいなのか内容を理解するのに苦労しましたが、とりあえず5章までざっと読み進めつつサンプルコードを動かしてみる事で、VC++/ATLでのCOMのつくり方がおぼろげながら理解できました。
- David Wang : HOWTO: Convert between JScript Array and VB Safe Array
- JScriptでの配列の扱いに困っているところで、はてダのコメント欄で教えてもらったサイトです。JScriptの配列をScripting.Dictionaryオブジェクトを使ってSAFEARRAYに変換する方法が載ってます。