C#プログラミングTips

C#からVisual Basicの関数を使う(1)

デジタルアドバンテージ
2002/04/19


 Visual Basic(以下VB)はVB .NETへと進化し、C#やほかの.NET言語と同様に、.NET Frameworkとして統一されたクラス・ライブラリを利用したプログラミングが可能になっている。しかしその一方で、.NET Frameworkには「Visual Basicランタイム・ライブラリ」が用意されており、VBに固有の関数をこれまでのように利用できる。これらの関数の一覧は「.NET Framework SDKドキュメント」の次の画面で示す個所から参照できる。

Visual Basicランタイム・ライブラリにある関数の一覧
.NET Framework SDKドキュメントの[リファレンス]−[コンパイラおよび言語リファレンス]−[Visual Basic言語とランタイムのリファレンス]−[Visual Basicランタイム ライブラリのメンバ]を表示したところ。

 これらの関数は、既存のVBプログラム資産をVB .NETでも生かすように用意されたものだと思われるが、その実体は「Microsoft.VisualBasic.dll」というアセンブリ・ファイルで提供されており、C#から見ればこれは1つのクラス・ライブラリにすぎない。つまりC#からもそれらを呼び出して利用することができるわけだ。もちろん.NET Frameworkのクラス・ライブラリがあれば、VBランタイム・ライブラリで可能なことはすべてできるのだが、この中にはC#から利用する価値のある便利な関数もいくつか含まれている。今回は、そういったすぐに役に立ちそうなVB関数をいくつかピックアップし、その機能と利用方法を紹介する。

サンプル・プログラムのコンパイル

 最初に、VBランタイム・ライブラリをC#のプログラムから利用する際の注意点を述べておく。まず、プログラムのコンパイル時には上述の「Microsoft.VisualBasic.dll」がデフォルトでは参照されないので、これを指定する必要がある。コマンドラインからコンパイルするには「/reference:(省略形は/r:)」を用いて、次のように行う。

csc /r:Microsoft.VisualBasic.dll vbfunc.cs

 vbfunc.csは今回使用しているサンプル・プログラムで、ここ(vbfunc.cs)からダウンロードすることができる。Visual Studio .NETを利用している場合は、[プロジェクト]−[参照の追加]メニューから表示されるダイアログ・ボックスから、コンポーネント名「Microsoft Visual Basic .NET Runtime」の項目を参照設定すればよい。

 もう1つ、リファレンス・マニュアルである「.NET Framework SDKドキュメント」におけるVB関数の解説は、VB .NETからの利用を前提としたものである。このため、特に関数のシグネチャについては、C#プログラマーが参照するには若干分かりづらい。このような場合には、.NET Framework SDKに含まれるツールである、クラス・ビューア「WinCV.exe」や、逆アセンブラ「ildasm.exe」を使用し、直接そのアセンブリの中身を参照すれば、正確な関数(メソッド)のシグネチャを知ることができ便利だ。次の画面は、WinCV.exeを用いて、VBランタイム・ライブラリに含まれているStringsクラスで定義されているメソッドを表示しているところだ。

クラス・ビューア WinCVの実行画面
WinCVでは、アセンブリに含まれている各クラスについての詳細情報を参照することができる。画面はVBランタイム・ライブラリに含まれているStringsクラスで定義されたメソッドを表示しているところ。

 前置きはこれぐらいにして、次にC#から使えそうなVB関数をいくつか紹介していこう。

ビープ音を鳴らすBeep関数

 まずは、Basic言語では伝統的なビープ音を鳴らすBeep関数だ。このビープ音を鳴らす機能は、.NET Frameworkのクラス・ライブラリにも含まれておらず、通常はWin32APIで実装されている“MessageBeep”を呼び出すことになる(この具体例は「C#入門:第20回 実行時に参照可能な属性」の「Win32 APIの呼び出し」で紹介されている)。VBランタイム・ライブラリにあるBeep関数を使用すれば、次のように、簡単にこの機能を呼び出すことができる(以降に示すサンプル・コードは、サンプル・プログラム(vbfunc.cs)中の、解説に必要な個所を抜き出したものである)。

 4: using Microsoft.VisualBasic;
         ・・・
11: Interaction.Beep();
ビープ音を鳴らすVBのBeep関数をC#から呼び出している例

 サンプル・プログラムの冒頭(4行目)では、usingディレクティブにより、VBランタイム・ライブラリの関数群が含まれている名前空間を指定している。11行目の“Interaction.Beep()”が実際にBeep関数を呼び出している部分だ。Beep関数の実体は、名前空間“Microsoft.VisualBasic”で定義されたクラス“Interaction”の静的メソッド“Beep”である。

 ちなみに、この関数を呼び出すことにより発せられる音は、コントロール・パネルの[サウンドとオーディオデバイス]−[サウンド]で、[一般の警告音]に設定されているサウンド・ファイルである。

関連記事(Insider.NET内)
第20回 実行時に参照可能な属性Win32 APIの呼び出し
 
 

 INDEX
  C#プログラミングTips
   C#からVisual Basicの関数を使う(1)
     C#からVisual Basicの関数を使う(2)
 
「C#プログラミングTips」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間