約 6,553,372 件
https://w.atwiki.jp/ipubluedictionary/pages/23.html
コネクション ポイントは、COM のクライアントとサーバーの間の双方向通信を確立します。この機構を使用すると、何かのイベントが発生したときに、COM のサーバーからクライアントをコールバックできます。たとえば、サーバー (Microsoft Internet Explorer など) は、イベントを発生させて、タイトルの変更のような変更をクライアント プログラムに報告できます。クライアントは、イベント シンクと呼ばれる内部 COM オブジェクトを作成して、通知の受信に備えます。通知を受信すると、クライアントはそのイベントに関連付けられているアクションを実行できます。 イベント シンクは、イベントに関連付けられているメソッドをサーバーに公開するためのインターフェイスを提供します。サーバーは、それらのイベントに関連付けられているメソッドを呼び出して、イベントを発生させます。クライアントは、イベント シンク インターフェイスを通常の COM インターフェイスとして実装します。サーバーは、そのインターフェイスをアウトゴーイング インターフェイスとして宣言します。つまり、COM サーバーの作成者は、COM サーバーのタイプ ライブラリ内のインターフェイスに source 属性を適用します。サーバーは、イベント シンク インターフェイスの定義を使用して、sink メソッドと invoke メソッドを識別します。 イベント シンク インターフェイスを実装する COM クライアントは、しばしばイベント シンク、または単純にシンクと呼ばれます。次の図では、シンクは、ISinkEvents インターフェイスを実装しています。イベントを発生させるサーバーは、ソースと呼ばれます。 FindConnectionPoint()に渡すIDの設定の仕方 登録してあるCOMのイベント関連の情報を取得しなければならない。 OLE/COM オブジェクト ビューアーを起動 Type Libraryからお目当てのものをダブルクリック(ITypeLib Viewerが開く) CoClasses- ApplicationEventsをオープン(2とか3とかあって、使いどころが不明…) 右窓に表示されている"uuid"をソース内で定義する クライアント側でイベントを区別するには更に先の階層のMethodsからそれっぽいイベントを開く そこに記述されている"id"を使用する IID定義例 (Microsoft Word 11.0 Object Library CoClasses ApplicationEvents2 の場合) OLE/COM オブジェクトビューアーでは、 uuid(000209FE-0000-0000-C000-000000000046) と記述されている。 ソースでの記述はと言うと… const IID IID_IApplicationEvents2 = {0x000209fe,0x0000,0x0000,{0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46};} となる。 もしくは DEFINE_GUIDE(IID_IApplicationEvents2, 0x000209fe,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46); でもいいのかもしれない。 あとでちゃんと出力の違いを確認しておこう…。 イベントインターフェースの探し方 サーバーオブジェクトがサポートしているイベントを探す方法として以下のやり方が推奨(?) サーバーオブジェクトの IDispatch- QueryInterface( IID_IConnectionPointContainer, p )を使って IConnectionPointContainer を取得 この時点で E_NOINTERFACEが返ってきたらこのオブジェクトはイベントインターフェースをサポートしていないという事 IConnectionPointContainerが取得できたら、今度は EnumConnectionPoints()メソッドを使って IEnumConnectionPointsを取得(この時点で取得できないってことはないハズ) IEnumConnectionPoints- Next() で IConnectionPoint配列を取得。 ・第1引数 : 配列サイズ(in) ・第2引数 : IConnectionPoint配列(out) ・第3引数 : 実際に取得できた数(out) 各IConnectionPoint配列に対し、GetConnectionInterface()メソッドでIIDを取得する。デバッガでIIDを見ればどのイベントがサポートされるかが分かる。 例えば Microsoft Word の場合、以下の4つのインターフェースが取得できる IID_ApplicationEvents IID_ApplicationEvents2 IID_ApplicationEvents3 IID_ApplicationEvents4 これは OLE/COM オブジェクト ライブラリーの Type Libraries の Microsoft Word 11.0 Object Library の ITypeLib Viewer を開き、 CoClasses の Application で 確認することができる。 更に展開した先のメソッドのIDがイベントIDとして登録したシンクオブジェクトのInvokeメソッドに渡されると考えていいのかな? ちなみに Excel の場合は IID_AppEvents のみサポートしているので、VBAとかでアクセスできるイベントよりは数が減りそうな雰囲気だ…。
https://w.atwiki.jp/wiki2_affiliate/pages/589.html
⇒お財布.com 分類 PC用ポイントサイト PC用リードメール 携帯用リードメール 対象キャリア DoCoMo / au / Vodafone / TU-KA / PC 携帯とPCの両方で稼げる、メール受信ポイントサイト。 送られてくるメールの広告をクリックすると1~5円貯まります。 紹介制度は紹介者と同額のポイントが自分のものになります。 携帯からサイトへアクセスした場合のみ、お財布ラッキーくじが一日一度引けて、ポイントを獲得することができます。 くじは最低でも1円なので、毎日ひけばくじだけでも年間365円以上になります。 また、2006年2月14日より、お財布クリックが携帯ではじまりました。 携帯からマイお財布にアクセスして広告をクリックでも貯まります。 検索するだめでポイントが貯まる、お財布サーチが2008年9月1日よりスタート! 換金は銀行口座、郵便貯金、Edy(おサイフケータイ)、eBANK、WebMoneyへの出金が300円から可能、Suicaポイントなら0円からポイント交換が可能。 会員数は2005年10月時点で70万人を突破。 2006年2月時点では80万人を突破! 2008年3月時点で130万人を突破!! 支払額 繰越額:300円 支払日:出金申請から約一週間。 (Edyはリアルタイムチャージ) 手数料:180円(Suicaへは無料) 運営会社 株式会社オープンキューブ ダウンサポート 豚の貯金箱 Southern Club(サザンクラブ) LIFE LINE 実績 年月 売上 合計 05年02月 66 66 05年03月 135 201 05年04月 86 287 05年05月 182 469 05年06月 369 838 05年07月 580 1418 05年08月 306 1724 05年09月 250 1974 05年10月 391 2365 05年11月 177 2542 05年12月 165 2707 06年01月 265 2881 06年02月 269 3150 06年03月 656 3806 06年04月 640 4446 06年05月 483 4929 06年06月 817 5746 2ちゃんねる 【お財布サーチ】お財布.com 11コイン目【鯖落ち】
https://w.atwiki.jp/whois/pages/19.html
asiaドメイン最安値 最新版 .asiaドメイン業者の比較を紹介しています。 最安値でドメインを取ろう! ランキング 業者 価格 料金表 備考欄 1位 Linkclub 770円 サービス料金 リンククラブのLDPが最安値770! 1位 fc2ドメイン 798円 fc2ドメイン登録料金 2位 ドメインキング 920円 ドメインキング価格表 2位 お名前.com 920円 お名前.com料金一覧 2位 ロケットネット 920円 ロケットネットドメイン料金 9位 livedoor Domain 945円 livedoor料金一覧表 5位 スタードメイン 950円 スタードメイン価格一覧 5位 ムームードメイン 950円 ムームードメイン価格一覧表 7位 VALUE DOMAIN 990円 ムームードメイン価格 8位 さくらインターネット 1800円 取得更新料金 9位 Doレジ 1995円 Doレジ料金表 9位 Gonbei Domain 2646円 Gonbei料金表 400種類もの豊富なドメインが選べる 9位 eドメイン 3675円 eドメイン ドメインを取得すると無料ホームページが設置できます .asiaドメインとは、アジア・太平洋地域専用に新設されたスポンサー付トップレベルドメインです。 2008年3月26日の21時から申請受付が始まりました。 アジア太平洋地域に属している個人・法人であれば、どなたでも登録することができます。 .eu .asia誕生は、米国主導のドメインから脱却するという狙いがあります。 、.com や .net などでは、希望したドメインの取得がもはや難しい状況なので、.asiaドメインを取得するのも良いでしょう。 データベース 比較 格安 価格表 独自ドメイン
https://w.atwiki.jp/hachinetsumirror/pages/20.html
「MSがPS3ハック支援」記事サイトを辿るとPS記者でしたw http //kamome.2ch.net/test/read.cgi/ghard/1298454270/ バイオ6はPS3独占!ただしソースはEverything HQ http //kamome.2ch.net/test/read.cgi/ghard/1298449238/ 10 名前:名無しさん必死だな[] 投稿日:2011/02/23(水) 17 31 35.40 ID BWkmagJzO 6 516 名前:名無しさん必死だな[sage] 投稿日:2011/02/23(水) 12 56 29.24 ID zkYX1CCM0 ttp //everythinghq.com/2011/02/ 虚構新聞レベルだな。 ソースロンダリングのために即席でつくったブログだろ。これ。 はちまもソニーもここまで落ちたか。 捏造糞ブログであることを隠すことさえしなくなったか。 544 名前:名無しさん必死だな[sage] 投稿日:2011/02/23(水) 13 05 20.28 ID 0L3XQ0Of0 516 Domain Name EVERYTHINGHQ.COM Registrar WEBFUSION LTD. Whois Server whois.123-reg.co.uk Referral URL ttp //www.123-reg.co.uk Name Server NS2763.HOSTGATOR.COM Name Server NS2764.HOSTGATOR.COM Status clientDeleteProhibited Status clientTransferProhibited Status clientUpdateProhibited Updated Date 19-feb-2011 Creation Date 19-feb-2011 Expiration Date 19-feb-2012 マジ突貫で作ってたw 13 :名無しさん必死だな:2011/02/23(水) 18 38 38.03 ID IOHacTdW0 28 名前:名無しさん必死だな[sage] 投稿日:2011/02/23(水) 17 55 45.58 ID 0L3XQ0Of0 [PC] このドメインサーチでadminiにZak Islamつーのが出るんだが これ叩くとなんか出ないかな ----------- (略) 34 名前:名無しさん必死だな[sage] 投稿日:2011/02/23(水) 18 08 45.01 ID 6dZLFAQf0 [PC] 28 ググると 海外ゲーム情報サイト「PlayStation LifeStyle」のライター・Zak Islam氏 というのが引っかかるね 44 名前:名無しさん必死だな:2011/02/23(水) 18 17 12.01 ID 0L3XQ0Of0 PlayStation LifeStyleってKZ3のメタスコア100出したとこだなw http //www.metacritic.com/game/playstation-3/killzone-3/critic-reviews
https://w.atwiki.jp/invalides/pages/50.html
ZDNet.com Application Development showrss プラグインエラー RSSが見つからないか、接続エラーです。 IT Management showrss プラグインエラー RSSが見つからないか、接続エラーです。 Hardware Upgrades showrss プラグインエラー RSSが見つからないか、接続エラーです。 Software Infrastructure showrss プラグインエラー RSSが見つからないか、接続エラーです。 Web Technology showrss プラグインエラー RSSが見つからないか、接続エラーです。
https://w.atwiki.jp/aradhaishin/pages/26.html
mogulus http //www.mogulus.com/ 上記とは少々毛色が違う配信サイト アカウント作成方法 Sign UPを選ぶと WHAT WOULD YOU LIKE TO DO? というページが開くと思うがここは 右の BROADCASTを選ぶ 次にLAUNCH A CHANNNEL というページが開いたと思うが ここでチャンネル名を決める channelNameにチャンネル名を打つ ここで打ったチャンネル名を選んでCTRLキーを押すと short Nameに勝手に名前が出る そのときにレ AVAILABLE と出たら下のLAUNTCH FREE CHANNELを押す 次に First Name Required Last Name Required Username Required Email Required Confirm Email Required Password Required Confirm Password Date of Birth Gender * Male * Female Spam Protection Required Fine Print をそれぞれ記入し、すべての項目にレがつけばOK、最後にSIGN-UPを押す。 成功すれば YOU REALLDONE とかいうページが出る。 そこで下のOPEN STUDIOCONFIGURE CHANNEL を押す。 自分の番組をつくってみよう Full Name * ここに配信タイトルを記入 のついているところを設定すれば、後はお好みでOK、Next Stepで次へ 以下は特に設定しなくても問題はないのでNext Stepで次へ 最後にLaunch my channel NOWを押す。 次にTOPメニューに戻り上のメニューのopenstudioを押す 出た画面でエンターモジュールススタジオを押す。 次回からは TOPメニューのopen studioから設定画面にいける。 Adobe Flash Playerは許可。 Video SourceでSCFH DSFを選ぶMoresSettings...で映像とマイク(ステレオミックス)の設定ができる →Cue を押す ※ここで注意点、Live の横のAudioはOFFにすること、でないと配信中にエコー状態になる。 VideoはONにする。 このまま→please cue a clipとか表示されるボタンを押せば配信できる。 自分の配信はメニューのGO Pro!の上がリンクになっている。 ここを編集
https://w.atwiki.jp/bfbc2/pages/266.html
全24個。どのミッションでいくつ破壊したかは、メインメニューのマイキャンペーンから確認できる。 HEART OF DARKESS (×2) 1/2 ミッション中盤、ボートが座礁し徒歩に切り替え進み敵の待ち伏せに遭遇した場所。 吊り橋が見える場所の左の木の階段を上って行った場所にある小屋の中。 2/2 吊り橋を過ぎ、左手に見える階段登ったコンクリートのバンカーの裏庭。 フリンの物資の手前。 UPRIVER (×2) 1/2 雷にまぎれての狙撃後、狙撃を行った場所から見て一番左端から2番目の建物の中。 2/2 岩の窪みを過ぎ、二手に分かれて横から向こう岸を襲撃する場面。 向こう岸の見張り塔の後ろにある建物の中。
https://w.atwiki.jp/uri-minjyoku/pages/24.html
暫定版 ■国別ランキング■ 中国.cn,…797 韓国.kr,…423日本.jp,…308 ロシア.ru,…71 北朝鮮.kp,…59 ドイツ.de,…51 チェコ.cz,…46 フランス.fr,…30 カナダ.ca,…18 コロンビア.co,…17 イギリス.uk,…15 イタリア.it,…15 オーストリア.at,…11 シンガポール.sg,…11 インド.in,…8 オーストラリア.au,…6 東ドイツ.dd,…5 ノルウェー.no,…5 オマーン.om,…5 香港.hk,…4 ■.ac.と.edu抽出大学のランキング■ 中国の東北師範大学nenu.edu.cn…28 中国の清華大学tsinghua.edu.cn、thu.edu.cn…24 中国の浙江大学zju.edu.cn、zju.edu.com…12 中国の延辺大学(朝鮮族向け)ybu.edu.cn…10日本の朝鮮大学校korea-u.ac.jp…9 中国の吉林大学jlu.edu.cn、jlu.edu.com…9 オーストリアのウィーン工科大学tuwien.ac.at…9 中国の復旦大学fudan.edu.cn…6日本にある国連の国際連合大学iist.unu.edu…3 中国の延辺科学技術大学(朝鮮族向け)ybust.edu.cn…3 韓国のKAISTkaist.ac.kr…2 ■大学別ドメイン一覧■ 日本の学習院大学gakushuin.ac.jp…1 韓国の高麗大学korea.ac.kr…1 韓国の漢城大学校hansung.ac.kr…1 韓国の東国大学校dgu.ac.kr…1 韓国のKAISTkaist.ac.kr…2日本の宮崎公立大学miyazaki-mu.ac.jp…1 オーストリアのウィーン工科大学tuwien.ac.at…9日本の朝鮮大学校korea-u.ac.jp…9 韓国の韓国外国語大学校hufs.ac.kr…1 新潟国際情報大学nuis.ac.jp…1 立命館大学ritsumei.ac.jp…1 ソウル大学校snu.ac.kr…1 中国科学院昆明植物研究所kib.ac.cn…1東京大学大学院 総合文化研究科 地域文化研究専攻ask.c.u-tokyo.ac.jp…1 中国の東北師範大学nenu.edu.cn…28 中国の清華大学tsinghua.edu.cn、thu.edu.cn…24 中国の延辺科学技術大学(朝鮮族向け)ybust.edu.cn…3日本にある国連の国際連合大学iist.unu.edu…3 中国の吉林大学jlu.edu.cn、jlu.edu.com…9 中国の中国農業大学cau.edu.cn…1 米国のハーバード大学harvard.edu…1 中国の浙江大学zju.edu.cn、zju.edu.com…12 中国の復旦大学fudan.edu.cn…6 中国の延辺大学(朝鮮族向け)ybu.edu.cn…10 中国の南開大学nankai.edu.cn…1 中国の北京師範大学bnu.edu.cn……1 米国のジョージア州立大学gsu.edu…1 米国のペンシルベニア州立大学psu.edu…1 米国のパデュー大学薬学部pharmacy.purdue.edu…1 豪州のクイーンズランド大学uq.edu.au…1 米国のベイラー大学baylor.edu…1 中国の北京大学pku.edu.cn…1 米国のジョージア大学uga.edu…1 米国のアリゾナ州立大学asu.edu…1 中国の上海交通大学sjtu.edu.cn…1 米国のバーゲン・コミュニティ大学…bergen.edu…1 米国のイェール大学yale.edu…1 米国のコロンビア大学columbia.edu…1 米国のフロリダ州立大学fsu.edu…1 ハンブルク応用科学大学haw-hambrug.de…1 応用科学大学デッゲンドルフfh-deggendorf.de…1 ロストック大学uni-rostock.de…1 アーヘン工科大学rwth-aachen.de…1 レーゲンスブルク大学生物学・臨床医学部biologie.uni-regensburg.de…1 ■国別ドメイン一覧■ アメリカ大陸編 米国.us,…1 カナダ.ca,…18 ブラジル.br,…1 チリ.cl,…1 コロンビア.co,…17 キューバ.cu,…0 メキシコ.mx,…0 アルゼンチン.ar,…1 パナマ.pa,…0 ペルー.pe,…0 パラグアイ.py,…1 ウルグアイ.uy,…0 ベネズエラ.ve,…0 フランス領ギアナ.gf,…1 東アジア編 日本.jp,…308 中国.cn,…797 韓国.kr,…423 北朝鮮.kp,…59 香港.hk,…4 マカオ.mo,…0 台湾.tw,…0 モンゴル.mn,…0 西欧編 ドイツ.de,…51 東ドイツ.dd,…5 フランス.fr,…30 イギリス.uk,…15 イタリア.it,…15 スペイン.es,…0 ポルトガル.pt,…0 オランダ.nl,…0 ベルギー.be,…0 スイス.ch,…3 スウェーデン.se,…1 ノルウェー.no,…5 デンマーク.dk,…1 アイルランド.ie,…0 東欧編 ロシア.ru,…71 ソ連.su,…0 ウクライナ.ua,…2 ベラルーシ.by,…0 グルジア.ge,…0 フィンランド.fi,…0 オーストリア.at,…11 チェコ.cz,…46 スロバキア.sk,…0 ハンガリー.hu,…2 クロアチア.hr,…0 スロベニア.si,…0 ボスニア・ヘルツェゴビナ.ba,…0 ブルガリア.bg,…1 セルビア.rs,…0 ポーランド.pl,…0 ルーマニア.ro,…1 ギリシア.gr,…0 リトアニア.lt,…0 ラトビア.lv,…0 エストニア.ee,…0 マケドニア.mk,…0 南アジア編 アルメニア.am,…0 アゼルバイジャン.az,…0 カザフスタン.kz,…0 トルクメニスタン.tm,…0 ウズベキスタン.uz,…0 キルギス.kg,…0 タジキスタン.tj,…0 インド.in,…8 パキスタン.pk,…3 アフガニスタン.af,…0 スリランカ.lk,…0 ネパール.np,…0 バングラデシュ.bd,…0 ブータン.bt,…0 中東編 トルコ.tr,…0 イラン.ir,…0 イラク.iq,…0 シリア.sy,…0 イスラエル.il,…0 レバノン.lb,…0 ヨルダン.jo,…0 クウェート.kw,…0 バーレーン.bh,…0 アラブ首長国連邦.ae,…0 サウジアラビア.sa,…1 カタール.qa,…0 イエメン.ye,…0 オマーン.om,…5 東南アジア編 フィリピン.ph,…0 ブルネイ.bn,…0 ビルマ.bu,…0 インドネシア.id,…0 カンボジア.kh,…0 ラオス.la,…0 ミャンマー.mm,…0 マレーシア.my,…2 シンガポール.sg,…11 タイ.th,…0 ベトナム.vn,…0 北アフリカ編 エジプト.eg,…0 リビア.ly,…0 チュニジア.tn,…0 アルジェリア.dz,…0 モロッコ.ma,…0 モーリタニア.mr,…0 マリ.ml,…1 ギニア.gn,…0 リベリア.lr,…0 ブルキナファソ.bf,…0 コートジボワール.ci,…0 ガーナ.gh,…0 ニジェール.ne,…1 チャド.td,…0 スーダン.sd,…0 南スーダン.ss,…2 エチオピア.et,…1 ソマリア.so,…0 中央アフリカ.cf,…0 カメルーン.cm,…3 セネガル.sn,…0 ナイジェリア.ng,…0 南アフリカ編 ガボン.ga,…0 コンゴ共和国.cg,…0 コンゴ民主共和国.cd,…0 ケニア.ke,…1 ウガンダ.ug,…0 タンザニア.tz,…0 ザンビア.zm,…0 アンゴラ.ao,…1 ナミビア.na,…0 ボツワナ.bw,…0 ジンバブエ.zw,…0 モザンビーク.mz,…0 マダガスカル.mg,…0 南アフリカ.za,…0 太平洋編 オーストラリア.au,…6 ニュージーランド.nz,…1 キリバス.ki,…0 サモア.ws,…0 トンガ.to,…3 パプアニューギニア.pg,…0 パラオ.pw,…0 フィジー.fj,…0 マーシャル諸島.mh,…0 ミクロネシア連邦.fm,…0 東ティモール.tl,、.tp,…0 北マリアナ諸島.mp,…0 グアム.gu,…0 南極大陸.aq,…0
https://w.atwiki.jp/uiireac/pages/52.html
用語集 COM戦 コンピューターと対戦するモード。 1クレジットで最大3試合プレイできる。三連勝で合計25wen入手できる。 自チーム含め8チームで優勝が争われる。 負けた場合その試合からコンティニュー出来る。対戦相手は同じチーム。 試合に勝利すると+5wen 試合に引き分けると+3wen 試合に敗北すると+2wen カード(警告)が出ると上記より-1wen 優勝すると+10wen マスターリーグモード(対人戦)と比較してのメリット 戦績・チームランクに関係がない為気軽にプレーできる。 相手がCPUの為悪質プレーの概念がない。確実にwenを入手する為に、そのようなプレーも選択肢に入る事がある。 最大約15分前後。1クレジットでプレーできる時間が長い。 最初の試合の難易度は非常に低い為、1クレジットで確実に5wenは入手できる。
https://w.atwiki.jp/miracle_mikuru/pages/68.html
// http //www.asahi-net.or.jp/~KV8S-YJM/another/yja104.htm //////////////////////////////////////////////////////////////// //・ //[VB ] z = obj.Calc( x, y ); //↓ //[C ] p- vptr- Calc( (void*)オブジェクトポインタ, x, y, z ); //////////////////////////////////////////////////////////////// //・COMの基本ヘッダファイル #include "objbase.h" //////////////////////////////////////////////////////////////// //・CLSIDとIIDの特定 //・CLSIDとIIDの定義 //1. VS6.0ツールの [OLE View] を起動 //2. [メニュー] → [File] → [View TypeLib...] → 調べるコンポーネント(DLL)を指定 //3. クラス(coclass)の "uuid" という属性がそのコンポーネントのCLSID(クラスID)である //4. インターフェイス(interface)の "uuid" という属性がそのインターフェイスのIID(インターフェイスID)である。 // //[uuid(---),version(---),custom(---,---)] //library Project1 //{ //importlib("stdole2.tlb"); // //interface _Test01; // //[odl, uuid(D1890A6C-B213-11D4-AFC1-00D0B7AD59E8), version(---), hidden, dual, nonextensible, oleautomation] //interface _Test01 IDispatch { //[id(---)] //HRESULT Calc( [in] long x, [in] long y, [out, retval] long* ); //}; // //[uuid(D1890A6D-B213-11D4-AFC1-00D0B7AD59E8),version(---)] //coclass Test01 { //[default] //interface _Test01; //}; //}; #include "objbase.h" // COM //CLSIDとIIDはGUID型として定義する const GUID CLSID_Test01 = {0xd1890A6d,0xB213,0x11d4,{0xaf,0xc1,0x00,0xd0,0xb7,0xad,0x59,0xe8}}; //CLSID const GUID IID_Test01 = {0xd1890a6c,0xb213,0x11d4,{0xaf,0xc1,0x00,0xd0,0xb7,0xad,0x59,0xe8}}; //IID //////////////////////////////////////////////////////////////// //・COMインターフェイスの定義 // 関数ポインタ配列の定義 // ※関数ポインタ配列 = VTable(Virtual function table) // ※順番通りに記述すること(使用しない関数は "void* p1" というふうに定義しても良い) // 各メソッドの第一引数はオブジェクト struct TestVTable { // IUnknown HRESULT (__stdcall *QueryInterface)(void* _this, IID* riid, void** ptr); ULONG (__stdcall *AddRef )(void* _this); ULONG (__stdcall *Release)(void* _this); // IDispatch HRESULT (__stdcall *GetTypeInfoCount)(void* _this, UINT*); HRESULT (__stdcall *GetTypeInfo)(void* _this, UINT, LCID, ITypeInfo**); HRESULT (__stdcall *GetIdsOfNames)(void* _this, const IID*, OLECHAR**, UINT, LCID, DISPID*); HRESULT (__stdcall *Invoke )(void* _this, DISPID, const IID*, LCID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*); // カスタム HRESULT (__stdcall *Calc )(void* _this, long x, long y, long* pRetValue); }; // COMインターフェイスの定義 struct _ITest01 { TestVTable *vptr; }; int main() { // COMの初期化 CoInitialize(0); // COMインターフェイスのポインタ _ITest01* p; // インスタンスの作成(ロード) HRESULT hResult = CoCreateInstance( (REFCLSID)CLSID_Test01, 0, CLSCTX_INPROC_SERVER, (REFIID)IID_Test01, (LPVOID*) p ); if( !SUCCEEDED(hResult) ){ printf("Error occured = %08x\n", hResult); return 0; } // メソッド呼び出し long x = 10; long y = 20; long z; p- vptr- Calc( (void*)p, x, y, z ); printf("z = %d\n", z); // インスタンスの解放(明示的な削除はできない) p- vptr- Release( (void*)p ); // COMの終了処理 CoUninitialize(); return 0; }