Visual Basic 4.0からSoundp.dllを使ってみる

このページでは、 95Reader/98Readerと Visual BASIC 4.0で、簡単なプログラムを試しに作ってみたので その過程を紹介します。

目次

95Reader/98Readerを手に入れインストールする

Visual C++ 4.0からSoundp.libを使ってみるを 参照してください。

インストールが済むと、d:\WINDOWS\SYSTEM\SOUNDP.DLL に 95Readerのライブラリがインストールされるようです。 (私のWindows95はD:にあります。) SOUNDP.DLLを使用して音声を出力するプログラムを作ってみました。

フォームを作成する

最近は、Microsoftのプログラミング言語もバージョンアップしていないので Visual Basic4.0しかありません。 (Visual Basicの最新版は6.0だったか?)

Visual Basic4.0でもプログラムは作れるので、作ってみました。 まず、次のようなフォームを作成しました。

Buttonが一つ置かれたフォーム

フォームの上にCommandButtonを一つ置いただけです。 何の意味もないプログラムですが、 95Readerの音声ライブラリSoundp.dllを使用して しゃべらせるのが目的なのでよしとしましょう。

コードを書く

95ReaderのCD-ROMに入っていた説明書には、 「VC++ でご利用の方は 用意したヘッダファイルをご利用下さい。 VBでご利用の方は、ヘッダファイルでの定義に変わる処理を行って下さい。」 としか書いてありませんでした。

DLLを使用したことはなかったので、 VoiceExplorer98音声もぐらの SAPIを使用するソースを参考に、 オブジェクト:(General)、プロシージャ:(declarations)のところに、 以下のようなコードを書きました。

Private Declare Function SoundMessage Lib "Soundp.dll" (ByVal lpString As String, ByVal nFlag As Long) As Long
関数の定義

本当は、他にもいろいろな関数があるので、それらの関数を 使用する場合には、宣言をしておかなければいけませんが、 今回は記述しませんでした。 本当は、「BOOL SoundMessage(LPCSTR lpszString, int flags)」を こういう宣言で済ませてOKなのかちょっと不安です。

また、Visual Basic4だからか?うちの環境がそうなのか? 宣言が足りないからなのか?理由は良く分からないのですが、 私の場合、「Declare」の前に「Private」を書いておかないと、 「定数、固定長文字列、配列、またはDeclareステートメントは、クラスまたはフォームモジュールのPublicメンバとして定義することはできません。」 と怒られてしまってダメでした。

エラーの表示

次に、ボタンをクリックしたときの動作を以下のように記述しました。 ボタンを押すと"こんにちは"としゃべるはずです。

Private Sub Command1_Click()
    SoundMessage "こんにちは", 0
End Sub
クリックした時の動作の記述

実行する

プロジェクトを保存するでファイルを保存してから、実行してみました。 ボタンをクリックすると、「こんにちは」としゃべりました。 もちろん、このとき95Readerを起動しておかないと 音声は出ません。

[ファイル(F)] [EXEファイルの作成(K)]で作った実行形式 ファイルを含めてリンクを張っておきます。 Visual Basic4のDLLがインストールされていないと、 実行できないと思います。

E-mail : nnakamur@mxq.mesh.ne.jp