パーソナルツール
現在の場所: ホーム Technical Information Win32api

MAGICでWin32のAPIを使用する...

このページでは、MAGICからWin32用APIを使用するための方法について紹介しています。



WIN32 APIとMAGIC


 解説するまでもないかと思いますが、Windowsが標準で提供しているAPI(機能のセット)は、「Win32 API」と呼ばれています。
 これらの仕組みや機能を知り、MAGICのコーディングに組み入れることは意義のあることと言えるでしょう。

 例えば、MAGICで、メッセージを表示するために標準で提供されている「エラー」コマンドがありますが、これらは、「E=エラー」か「W=警告」かの2種類しか機能を選択することができません。メッセージを表示したら、利用者は「OK」ボタンを選択するしか選択の余地がないし、例えば、「はい」、「いいえ」を表示させるようにコーディングすることはできません。ダイアログに表示されるアイコンは2種類ですし、単にメッセージを出すだけに使うのなら、(「E=エラー」としてしまうとロジックに影響があるので)黄色い「!」マークのアイコンを使用せざるを得ないかも知れませんし、処理を選択するような機能が欲しければ、自前でボタンを配置したプログラムを作っているかもしれません。

 しかし、「OK」ボタンを押すだけのものも、「はい」、「いいえ」を出して処理を選択させるための画面を出すのも、Windowsにとっては、「MessageBox」という同じ関数で実現されており、ただ、その関数に渡すパラメータが違うだけなのです。表示するアイコンを「?」に変えたり、ボタンの初期位置を「いいえ」に配置するなども、この指定パラメータを操作することにより実現が可能です。

 MAGICでは、外部DLLにアクセスするための機能を標準で持っていますので、それらのAPIの機能を知り、正しくコールする方法さえ知り得れば、より有用なMAGICコーディングが実現できることでしょう。
 しかし、MAGICの開発者にとってWin32のAPIの仕様を調べるのは少し敷居が高いのかも知れません。今でこそいろいろなWebサイトでWin32APIの仕様については、簡単に調べられるようになったかもしれませんが、MAGIC用にそれを解説しているページは殆どないのが現状かもしれません。

 このページでは、MAGICの開発に有用と思われる基本的なものについて、順に公開していこうと考えています。


MAGICからの呼び出し方法


 まず、MAGICからのアクセス方法を大別すると次の2種類になります。

  • 関数型 ・・・ CallDLLS関数等を利用
  • 手続型 ・・・ 外部コール「U=UDP」を利用


  1. 関数型の場合

     関数型として定義するタイプのものは、「CallDLLS」等のMAGIC関数を使用し、呼び出すことが可能です。
     下の画面は、GetActiveWindow関数を呼び出している例ですが、第一パラメータに実際に呼び出す「モジュール名+関数名」を、第2パラメータには、パラメータと戻り値の並びと型を表す「引数型文字列」を、第3パラメータ以降は、関数の引数や戻り値を順に指定します。
     GetActiveWindowは、USER32.DLLというモジュールの関数ですが、パラメータが無く、ウインドウのハンドルを返す戻り値のみなので、「'4'」が指定されているわけです。

    MAGIC_01.jpg

     関数型の場合は、式を記述する項目更新や代入、その他の箇所で使用することが可能です。

  2. 手続型の場合

     手続型として定義するタイプのものは「外部コール」コマンドを使用して記述します。
     下の例は、「GetWindowText」関数をコールするためのものですが、UDPの指定は「@USER32.GetWindowText」のようにモジュール名USER32.DLLと関数名「GetWindowText」を組み合わせたものです。

    MAGIC_02.jpg

     パラメータの指定は、ダイアログを開いて指定します。
     先頭が「引数型文字列」で、関数の引数や戻り値に対応したものを指定します。それ以降は、実際の関数の引数や戻り値です。

    MAGIC_03.jpg



コーディングの実際


 コーディングの実際例については、各ジャンル別にページを作成しています。
 下記の関連コンテンツからページをたどって下さい。(未完成のページあり)