|もうすぐ寝るけど、ちょっとやっちゃったから少しだけ。定数の列挙TypeLibにひもづく定数はWSFの<reference>要素でGlobalオブジェクトにまるっとコピーされるんだけども、大規模なWSHを使ったアプリを作る場合はどうしても不向き。言う訳でやっぱり定数の列挙したいなーと。Library*1に注目してる一番大きな要因が定数なんですよね。-2147220991MemberInfoは今回は定数を表現してたけど、それがメソッドだったり色々する訳です。|これはシリーズ連載予定。Edition*2をインストールすると入ってる。まぎらわしい間違いなので、訂正した方がよいかもです...。同僚のkaorunさんから突っ込まれたので直しました。間違いを突っ込まれたら素直に直すのが最近の良い子の例です。(wkaorunさん、ありがとうございました。iinfo.ImpliedInterfaces.Item(1)は再びInterfaceInfoが返って来る。Count]を再帰的にやれば良い。事で特定のInterfaceを実装しているかどうかは、次のようなコードで問題ない。2007-10-18T03:26:22+09:00)概ね同じような値が返って来る。さっきのisImplementedのデバッグ出力のコメントアウト部分を外して、IUnknownと色々比較してみる。IUnknowなるほどねぇ。2007-10-18T03:43:02+09:00)InterfaceInfo.Parent.HelpStringがOLEViewのTypeLibの見出しと大体一致してるみたい。|d:id:takuya_1std:id:Mugのお二人は、どうも僕と同じような事を考えてるっぽぃ。WSHでの云々は相当汎用性が利くような物にしたいと思ってて、ライブラリも再利用可能な物にしたいなーと思ってたりする。CodeReposとかでソースの共有とかしたいですよねぇ。<![CDATA[ここのテキストは<runtime>要素の子要素に<usage>要素があるので、完全に無視されます。<description>などのテキストが全て無視されて<usage>要素で記載された内容に置き換わります。<description><![CDATA[バージョン付きは表示出来るか。今からid:nishiohirokazuとWiiスポーツの練習をするので後で書く。|これも続編は期待しないこと。適当な名前で保存する。echoserver.jsで起動します。7777みたいに接続して適当に文字を打つとEchoが返ってきます。解説MSWinsock.WinsockはWinSockコントロールのProgIDです。Listenする場合はバインドするポートをLocalPortプロパティに入れてListen()をコールするだけです。後は接続要求が来たときにClose()で一旦初期化した上で、Accept(reqID)すればクライアントからの接続を受け付けます。この時のハンドラはprefix_ConnectRequest(reqID)です。*3一番厄介だったのは、Dataが送られてきた際のWinSockのGetData()の呼び出しです。maxLen);となっているので、参照渡しでdataを渡さなければならないのですが、これは残念ながらJScriptでは出来ないです。この部分の解決はScriptControlを使ったVBScriptで何とかしてます。GetDataのtype部分にvbstringと言う定数を渡しているのがミソです。この辺りXPCOMだったら引数名をプロパティに定義してあるオブジェクトを渡してやると上手い事、そのプロパティに値を代入してくれるんですけど、COMの場合はそんな枠組みは多分無さそう。試した結果だけどWSHでもCOMを叩けば色々出来るってのが分かったので面白かった。*1:このTLI.TLIApplicationの事ね。*2:なんか無料版の奴ね*3:prefixはWScript.CreateObjectで指定した値。WScript.ConnectObject()で後から指定する事も出来る。00:23すみません、返信が遅れました。(最近ブログ更新サボっていて、前向きなコメントを頂くとは想定外でした...)私の場合は、ECMAScript(JavaScript,JScript)のコードをライブラリ化してまとめてインクルードでき、かつ多段(プロトタイプ)継承とプライベートメンバ・メソッドな「クラス(ユーザー定義オブジェクト)」を作る。ライブラリ化の方針としては、ECMAScript準拠の部分と環境依存部分を別"クラス"や別"パッケージ"または"サブクラス"に分けて、なるだけ様々な環境で動作できるようにしています。WSHでもそれらは動くのですが、せっかくスクリプト言語なのでCUIの対話形式での実行環境を作ってみましたのです。(似てるのかな...?)スミマセン今はとりあえず返信させて頂こうかと思いましたので、後々内容を読ませていただきますね。05:17おお、コメントありがとうございます。ライブラリ化してまとめてインクルードできこの辺りは僕はScriptControlでやろうと思っています。ScriptControlはまだ挙動がいまいちわかってない部分があるんですよねぇ。多段(プロトタイプ)継承これはちょっとこの言葉だけだと想像出来ないかも。僕も対話形式のConsoleは作ってるんですけど、まだライブラリ化の方針まで固まってません。ScriptXは使おうと思ってますけど。21:40いろいろとActiveXとか使ってますねー。どこで仕様とか調べるのでしょう...??後々参考にさせていただくかも知れません。多段(プロトタイプ)継承JAVAなんかはクラスベースの継承だけれど、ECMAScriptはプロトタイプベースの継承ですよね。関数を使ったユーザー定義オブジェクトの場合、継承のシステムはユーザーが用意しなければならないはずです。私の場合は、クラスライクな継承を何段も(サブクラスのサブクラスのサブクラスの...)できるようにしたのでこのように書かせていただきました。多重継承はできませんでした。その代わり、"クラス"に1つ(static)なプロパティも継承させることにしました。こんなことやってます。ActiveXとか使ってますねー。その手のブクマが流れてると思います。継承云々の話ですけど、そもそも継承を積極的に使うべきかって辺りでJavaScriptのprototypeベースはそこまで要らない気がするんですよねぇ。基本は普通にprototypeにベースとなる"オブジェクト"を突っ込んであげるだけで事足りると僕は考えていて、それ以上に拡張したいならmixinすればいいと考えてます。型チェックってよりメソッド名で実装してるかしてないかみたいな。