がんふぃーるど室長の不定期ブログ

ただいま助手と悪戦苦闘中!

目次

Blog 利用状況

ニュース


自己紹介

名前:がんふぃーるど
肩書:室長
種別:人間・男
資格一覧:
MCP 70-215 Installing, Configurating, and Administering Microsoft Windows 2000 Server
MCTS .NET Framework 2.0 - Distributed Applications
MCTS .NET Framework 2.0 - Web Applications

犬紹介


名前:なうら
肩書:助手
種別:犬・狆・メス
誕生日:2006/7/9
特技:鼻水飛ばし、甘噛、奇襲・急襲・強襲、そそう、お手、お座り、待て

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

ActiveX コントロールを.NETで使う

ActiveXのコントロールって使いたくなることってありませんか?Vistaはまだ使ったことがないのですが、XPぐらいではまだまだActiveXやCOMは健在で、面白そうなライブラリがゴロゴロ転がっています。COMを.NETで使用する場合、[参照の追加]から[COM]タブを開き、目的のCOMを選べば勝手にラッパークラスを作ってくれて使用することができます。一方、ActiveX コントロールはどうかというと、当然.NETのControlクラスを継承しているはずがないので、単純に参照に追加するだけでは使えません。

では、どうするか?

実は.NET FrameworkツールにActiveX コントロール インポータ(Aximp)というのがあります。.NET便利っすねー。すんばらすぃ。ぃよっ、大将!(謎

使い方も簡単で、例えばWindows Media PlayerのActiveXコントロールのラッパークラスを作ろうとするときは

aximp c:\WINDOWS\system32\msdxm.ocx

とVS2005コマンドプロンプトに打ち込んでやれば、

MediaPlayer.dll
AxMediaPlayer.dll

の二つのラッパークラスライブラリができあがります。(aximpを実行したときにActiveXが見つからないと言われたら、regsvr32でActiveXをレジストリに登録しましょう。)MediaPlayer.dllは[参照の追加]でCOMを追加した際に作られるラッパークラスライブラリと同じものです。目的のActiveXコントロールラッパークラスライブラリはAxMediaPlayer.dllです。

AxMediaPlayerも出来上がったことですし、簡単なアプリを作ってみましょう。

アプリは設定ファイルに書かれているファイルパスからファイルを読み込んで、.NET Form上に設置されたWindowsMediaPlayerコントロールに映像を表示します。

コード

public partial class Form1 : Form
{
  AxMediaPlayer.AxMediaPlayer player;

  public Form1()
  {
    InitializeComponent();

    player = new AxMediaPlayer.AxMediaPlayer();
    ((ISupportInitialize)player).BeginInit();
    player.Dock = DockStyle.Fill;
    ((ISupportInitialize)player).EndInit();

    this.Controls.Add(player);

    this.Load += new EventHandler(Form1_Load);
  }

  void Form1_Load(object sender, EventArgs e)
  {
    player.FileName =
      WindowsApplication27.Properties.Settings.Default.fileName;
    player.Play();

  }
}

これで完了。実行結果はこんな感じ

表示されている映像が見えていませんが、フォームにMediaPlayerのコントロールが表示されているのは分かりますね。(何故見えていないかは謎…フレームレートのせい?ブラウン管の映像を撮ってるわけじゃあるまいし…)
修正:ハードウェアクセラレータをオフにしたらコピペできるようになりました。実験のために無理やり起こされ、不機嫌ななうら助手が写っております。さんきゅー、ぽぴ王子

 ActiveXのコントロールはそれこそ.NETのコントロール以上豊富なので、色々使って試したい方は是非aximpでガンガンインポートして使っちゃいましょう。

 

Reference

Windows フォーム ActiveX コントロール インポータ

投稿日時 : 2007年3月13日 20:52

コメントを追加

# re: ActiveX コントロールを.NETで使う 2007/03/13 20:56 シャノン

> 何故見えていないかは謎

オーバーレイ使ってるせい…だったかな。
PrintScreenで撮れねぇのですよ。

# re: ActiveX コントロールを.NETで使う 2007/03/13 21:36 がんふぃーるど

> オーバーレイ使ってるせい…だったかな。
がびーん。そうなんですか…
グラボの方ではめ込まれるんじゃどうしようもないですね。orz

# re: ActiveX コントロールを.NETで使う 2007/03/13 22:50 中博俊

デジカメ!!

# re: ActiveX コントロールを.NETで使う 2007/03/13 22:58 がんふぃーるど

> デジカメ
なるほど!デジカメでそれらしい写真を撮って、それをペイントを使って手動でオーバーレイさせるのですね!(違

# re: ActiveX コントロールを.NETで使う 2007/03/14 9:41 ぽぴ王子

画面のプロパティ
→設定タブ
→詳細設定(V)
→トラブルシューティングタブ
→ハードウェアアクセラレータ(H)を「なし」に設定

これでどうでしょう。

最近こういう画面キャプチャ関係ばっかりやってるので
もうこりごり(何してるんだ

あ、終わったら元に戻さないと遅くなります(笑)

タイトル  
名前  
URL
コメント