SHOJI's Code
仕事や趣味で書いた各種言語のプログラミングコード(エクセルVBA,PHP,C/C++,JavaScript等)、その他雑記。
アクセスアップ・SEO対策・検索エンジン登録
2008.04<<12345678910111213141516171819202122232425262728293031>>2008.06
COMのイベントで・・・
前回の記事でも書いた、テスト用のCOM。そのイベント処理をJavaScriptで使う場合、WSHならば前回の記事の方法を使えばイベントハンドラも設定できるが、HTMLのJavaScriptだと、その方法も使えないので、イベントハンドラをプロパティとして指定するようにした。
ちなみに以下がテスト用のWSH。
var objTest = WScript.CreateObject("testcom.counter", "objTest_");

if( objTest )
{
msg( "CreateObject() succeeded." );

msg( "Default value is "+objTest.value );

objTest.onchange = changed;

objTest.inc();
objTest.dec();

for(var i=0;i<10;i++) WScript.Sleep(1000);
}
else
msg( "CreatetObject() failed." );



function objTest_onchange(c)
{
msg( "(EVENT)Value changed. New value is "+c.value+"(c) / "+this.value+"(this)" );
}
function changed(c)
{
msg( "(CALL)Value changed. New value is "+c.value+"(c) / "+this.value+"(this)" );
}

function msg(txt)
{
WScript.Echo( txt );
}


ここで、問題が出た。イベントハンドラ(objTest_onchange)では、thisがそのCOMオブジェクトなのだが、プロパティとして渡した方(changed)がthisが違うもの。とある方法で調べてみると、changedのthisのクラス名は全然別のもの・・・。困ったぞ・・・。
[COMのイベントで・・・]の続きを読む
テーマ:プログラミング - ジャンル:コンピュータ
WSHでイベント処理 (JScript)
前回の書込みから2ヶ月経っている・・・(^^;

最近、ちょっと仕事も落ち着き、COMなどプログラミングしてみた。
で、検証用にWSHを使ってみたのだが、最初どうやってイベントハンドラを定義してよいかわからなかった。どうやら以下のようなコードでイベントを受理できるらしい。
var objTest = WScript.CreateObject("testcom.counter", "objTest_");

if( objTest )
{
msg( "CreateObject() succeeded." );

msg( "Default value is "+objTest.value );

objTest.inc();
objTest.dec();

for(var i=0;i<10;i++)
WScript.Sleep(1000);
}
else
msg( "CreatetObject() failed." );



function objTest_onchange(c)
{
msg( "(EVENT)Value changed. New value is "+this.value );
}

function msg(txt)
{
WScript.Echo( txt );
}


testcom.counterというProgIDのCOMを作ってテストしたときのWSHである。CreateObjectの第2引数でイベント受理用の関数のプリフィクスを指定する。上のCOMは値が変化したときにonchangeというイベントが発生するのだが、上のようなコードを書くとそのイベントが発生したとき、objTest_onchange関数がコールされる。
ただ残念なのは、この方法が使えるのがWSHのみで、html上のJavaScriptでは使えないということだ。
テーマ:JavaScript(ジャバスクリプト) - ジャンル:コンピュータ
copyright © 2004-2006 SHOJI, Powered By FC2ブログ all rights reserved.
無料ホームページ アフィリエイト レンタルサーバー FC2ブログ 一戸建て