定義を用意できるのであれば、それでも代用可です。いるのでそこから列挙してみる。}}この例では、ポータブルデバイスを列挙する方法が判然としていなかったので、ファイルシステムではないものだけをピックアップしている。一気にファイルをとるかしましょう。とれればこっちのもの。以下のようなコードでサムネイルがとれる。接続している状態で後述するサンプルを動かすとこんな感じでとれる。行ほどで済むので楽ちん。出てきたら選んで右のボタンを押すという形。サンプル:http://sdrv.ms/PbBXIvここからファイル操作な話は未確認。ベースではできないかもしれないなぁと思っていますが、さて...。1(VS2010SP1)ではC++/CLIのIntelliSenseは死んだままです。BlogにC++/CLIのIntelliSenseの話題が出ていました。次のメジャーバージョンアップで対応することで進めているようです。2010ではなぜこうなったのかという背景を英文ですが、説明しているようですので、気になる方は読んでみてはいかがでしょうか。vNexthttp://blogs.msdn.com/b/vcblog/archive/2011/03/03/10136696.aspx要するにこんなところでしょうか?適当な解釈が含まれる可能性があるので、正確なところは原文を参照してください。スケジュール的に無理だった。(仕事量を過小評価していた?)C++/CLIだけ古い仕組みを動かそうとしてもやることが多すぎて無理と判断して諦めた(rejectした)RTM後にすぐにC++/CLIのIntelliSenseの作業に取りかかったが、SP1に間に合わせるには準備時間が足りなかった。Frameworkを使ってみました。コモンダイアログってどんな感じかを軽く試してみてます。Frameworkの入手は以下のサイトから。http://code.msdn.microsoft.com/WindowsAPICodePackこのテストアプリでは、KnownFolders.Librariesを指定してコモンダイアログを開き、物理パスとなんちゃって仮想パスを取ろうとしています。仮想パスの取り方がエレガントじゃないので、もっとほかの方法がないもんかなー。2008で使えそうなアーカイブも置いておきます。実のところ、初期フォルダをがんばって指定しても、Windowsに覚えられちゃって、前回のフォルダで開くという挙動をするんですよね。回避策があるかどうかは調べてません。2010ではC++/CLIのIntelliSenseが機能しないという制限があります。これはベータ2の段階から変わらず、フィードバックセンターにも以下のように登録されています。Betaでも改善されておらず、USのConnectを覗いてみました。projectshttps://connect.microsoft.com/VisualStudio/feedback/details/626825/intellisense-not-working-with-vs2010-c-cli-projectsということで、SP1でもC++/CLIの冷遇は変わらないようです。「将来のバージョンで」ってばっかりで、改善されないのはいかがなものか...。2010に移行するのは逆に苦労が待っているようにしか思えない...。Basicと毛並みが異なるので、参考までにスクリーンショットを載せておきます。1.xが同じプロセス空間にロードできない問題と互換性の問題があるため、マネージコードでCOMを作ることはお薦めしません。0.はじめに@ITでサンプルよこせーというようなニュアンスの発言を受け取ったのでのんびりと書いていきましょう。Professionalです。1.プロジェクトを作る「クラスライブラリ」を選択して、プロジェクトを作ります。Frameworkのバージョンの選択はお好みでどうぞ。2.インターフェースを作るプロジェクトメニュー等から新しい項目を追加でインターフェースを追加します。3.インターフェースにCOMとして公開するために必要な属性をつけるComVisible属性でCOMに公開するかどうかを設定でき、trueだと公開になります。ClassInterface属性で遅延バインディングを認めるという意味でAutoDispatchにしています。必要に応じて変えて下さい。最後のGuid属性でインターフェースに対してGUIDを設定しますが、このGUIDはツールでインターフェースやクラス毎に必ず違うものを生成して下さい。Format」で「Copy」ボタンを押して、クリップボードにコピーした文字列をGuid属性のところに入れます。}の部分は外して下さい。GUID」ボタンを押して下さい。例:{D62189BE-C74D-46f5-8223-E0B8EC508BE5}が出てきたら、Guid属性には”D62189BE-C74D-46f5-8223-E0B8EC508BE5”を設定する。4.インターフェースにメソッド・プロパティを追加ひとまず、こんなところで、作ってみました。毎度おなじみのプロジェクトの新しい項目の追加からクラスを作成します。作成されたクラスで、インターフェースを実装するというように書きます。ITestClass{}さらにクラス側にも色々と属性をつけておきます。ITestClassここでITestClassと書いた部分にカーソルを合わせると下線が出てくるのでクリックして、メニューからインターフェースを実装しますを選択する。すると、インターフェースを実装するスケルトンコードがずらずらと出てくるので中身を埋めていきます。}}6.レジストリ登録するためにプロジェクトの設定を変えておく順番が前後しましたが、プロジェクトの設定を変えておかないと、COMとして利用できる形に登録されません。プロパティを選択します。ソリューションエクスプローラでプロジェクトを右クリックしてプロパティを選択しても構いません。表示された画面から「ビルド」タブを選択して、下の方にある「COM相互運用機能の登録」にチェックを入れておきます。この設定をしておくことで、ビルドしたときに自動的にレジストリに登録されるようになります。Studioを管理者権限で起動する必要があるかもしれません。)7.ビルドする構文エラーとか特に問題がなければ、さっくりとビルドが成功するはずです。8.使ってみるRubyは普段触りません。検索で引っかかった情報を元に適当に組みました。test.rbにような形で食わせると、次のように出力されます。World!33289ちゃんとCOMが呼び出せている様子です。導入部分としては目的を達成できたかと思います。・今回WIN32OLEモジュールを使っています。Dispatchなインターフェースがないとこの方法では使えないので属性の設定を無闇に変更しないようにしましょう。・「とりあえず動いた」の状態ですので、これをスケルトンコードにしないようにしましょう。コマンドを使用します。・属性の意味はMSDNを見て調べましょう。10.サンプルソースhttp://cid-9e1932af4be9e15d.skydrive.live.com/embedrowdetail.aspx/.Public/ComTestLibrary.zip※GUIDはそのまま使用しないようにしましょう。Themes上にスクロール。