残念023 半バラ丼

窓の杜 – 【今日のお気に入り】クリップボード内の文字装飾をはずす「clip2PlainText」
以前作ったclip2PlainTextをVectorに送ったら一昨日登録されて、それが窓の杜に掲載されました。
チェック速ええ…
cpanのFlickr::APIモジュールを使ってFlickrAPIをtag searchしてみるテスト。
zanmaiで検索
orzで検索
oklabで検索
shokaiで検索
screenshotで検索
(生XML注意)
XML::Parser::Lite::Tree::XPathが便利だった。TreeをXPathで切って配列で返してくれる。
(最近AS3用にs.h.log: C#2.0+AS3.0 – XMLSocketCommandというのを作ったので、こっち推奨です)
C#.NETの中にActiveX ObjectのFlash.ocxを埋め込んで、連携させるのはよくやる手なんだけど、Flash.ocx←→C#間の通信がクセのある仕様(SetVariable, fscommand)なので便利にするクラスを作ってみた。
・変数1個の送受信
・C#のArrayListとFlashのArrayの交換
ができる。
・sample project(VS2005)
・OcxConnector.as(for Flash)
・SwfConnectorLib.cs(for C#)
中央の白い所だけがFlash。上下はC#のForm
FlashのStringの扱いの弱さもあって、配列はまとめて1000個ぐらいまでが限度みたい。俺の環境では2000個送ると固まる。
1要素あたりの文字数にもよると思うけど。
■C#からFlashにデータを送る
axSWFという名前でShockWaveFlashObjectがFormに配置されているとして
usingSwfConnectorLib;
SwfConnectorconnector=newSwfConnector(axSWF,”_root.connector”);
connector.SendData(stringstr);
■FlashでC#からデータを受け取る
_rootにconnectorという名前でOcxConnectorクラスが配置されないと通信できない(C#側のコンストラクタにも注意)
importOcxConnector;
varconnector:OcxConnector=newOcxConnector();
connector.setFunc_onRecvData(onRecvData);// コールバック
functiononRecvData(recvData:String){
trace(recvData);
}
コールバック関数を登録しておくと、受信した時に受け取れる
■症状
VisualStudio2005でAxShockwaveFlashObject(Flash8a.ocx)がツールボックスに読み込めるのに、Formに配置しようとするとダイアログが出て、配置させてくれない件について。
error message:
ActiveXコントロールをインポートできませんでした。正しく登録されているか確認してください。
■解決方法
ほよログ:VS2005でFlashオブジェクトを埋め込むで、VS2003で書き出したファイルを持ってくるという解決策が出てたけど、さらに根本的な解決方法を見つけた。
「C:\WINDOWS\system32\Macromed\Flash\Flash8a.ocxを読み込み直す」
(あと、最新版のFlashPlayerもインストールするといいかもしれない)
すると、同じCOMコンポーネントが名前違いで2つ登録される。
Macromedia Flash Factory Objectは間違い。
Shockwave Flash Objectの方が正解。Formにドラッグ&ドロップできて、Flash8の機能が使える。
……つーか、登録が間違ってるっていうんだから登録しなおすのがスジだよな。1年間ぐらい思いつかなかった。
信じる者は(足下を)すくわれる。