DLL関数を呼び出すには

Windows環境や、購入したパッケージには、たくさんの利用可能なDLLがあります。独自に作成したものを使用する場合も考えられます。各々のDLLの呼び出し方は異なっていますが、呼び出し先に合わせてパラメータを設定する必要があります。ここでは、Windows APIを呼び出してメッセージボックスを表示させる簡単な例を元に説明します。

Magic xpaでは、 CallDll() 関数や[コールUDP]処理コマンドを使用して、DLLを呼び出すことができます。ここでは両方の呼び出し方で説明しています。

CallDLL()関数を使用する

CallDll()関数には3種類あり、呼び出すDLLに応じて使い分けます。Windows APIを呼び出す場合は、stdcall規約で呼び出すためCallDLLS()関数を使用します。

Screen06-18.gif

  1. コール処理を定義したい行で F4 を押下します。

  2. 「U」を押下して[項目更新]処理コマンドを作成するか、プルダウンリストから処理コマンドを選択します。

  3. 戻り値を格納するデータ項目を選択します。この場合、呼び出すDLLは数値を返すため、戻り値には数値型項目を使用します。数値は、ユーザからの応答を表します。

  4. [値]カラムで ズーム して、起動するDLLを定義します。ここでは、 CallDLLS() 関数を使用して呼び出します。 構文は以下の通りです。

CallDLLS( DLLName , ArgString , Arg1 , Arg2 ... )

パラメータ:

  • DLLName …… DLLの名前です。この例では、 user32.MessageBoxA になります。  

  • ArgString …… パラメータのデータタイプを表す文字列です。各パラメータに対して1文字が対応します。最後の1文字は、戻り値を表します。

  • ArgX …… 渡されるパラメータです。この例では、4つのパラメータが渡されます。(Windowハンドル値、2つの文字列、およびボックスのスタイルを表す数値)

文字

データのタイプ

1

Char

2

Short

W

Wchar

4

Long

F

Float

8

Double

D

Double pointer

E

Float pointer

L

Long pointer

A

Null で終了するString のアドレス

U

LPCWSTR

V

Void pointer

0

Void

T

Structure

CallDLLS() 関数を定義し実行すると、Windowsのメッセージボックスが表示されます。ユーザがボタンを クリック すると、 クリックされたボタンに応じた戻り値(6=はい、7=いいえ、2=キャンセル)が返ります。 

Screen06-39.gif

ヒント:

このように、OSに依存する関数を使用する場合、Magic xpaのタスク内でカプセル化することを推奨します。このようにすると、別の方法で呼び出したりインストール内容が変わったりした場合に変更が簡単になります。

コールUDP処理コマンドを使用する

Screen06-20.gif

[コールUDP]処理コマンドを使用してDLLを呼ぶ場合も、 CallDLL() 関数を使用した場合と同じように利用できます。

  1. コール処理を定義したい行で F4 を押下します。

  2. 「I」を押下して[外部コール]処理コマンドを作成し、次のカラムに移動します。

  3. 「U」を押下して「UDP」を選択します。 次のカラムに移動します。

  4. ズーム して[式]エディタ を開き、起動するDLLの名前を入力します。DLL名の前に @ を指定します。この例では、Windowsの'user32.MessageBoxA'を呼び出すため以下のようになります。

    @user32.MessageBoxA 

Enter を押下して[ロジック]エディタ に戻り、次のカラムに移動します。

  1. ズーム して[パラメータ]テーブルを開きます。ここでは CallDLL() 関数の場合と同じ書式で設定します。最後の行には、戻り値を返す変数項目を定義します。

  1. Ctrl+Enterを押下して[外部コール]処理コマンドの[特性]シートを開きます。[規約]特性に「STDCALL」と入力します。

関連プログラム:

オンライン/リッチクライアントサンプル(プログラム EL09/REL09)