APIとDLLの宣言と呼び出し
(ヘタな説明で申し訳ない...)
●API&DLLとは?
教科書のような説明は説明しません(汗
要は、みんなが使う命令・関数はみんなで使おう!ということです。
みんなが同じプログラムを書くのは無駄ですし。
例えば、電子レンジ。
レトルトのカレーや、コンビニの弁当を温めるのに大助かりのアレです。
あなたは電子レンジの動作原理を知っていますか?
少なくとも、自力で一から電子レンジを作れる人はいないでしょう。
でもあなたは、操作方法を知っていれば原理は知らなくていいのです。
プログラムの世界も同じです。
詳しい動作原理を知らなくても、命令の仕方を知っていればいいのです。
また、機能単位でモジュール化する利点は他にもあります。
・実行ファイルサイズが小さくなる
・ソースを使いまわせるので、プログラマの負担が減る
・バグがあった場合、そのモジュールを修正するだけで全てのバグを退治できる
など。まあ、知らなくてもいいと思います(<独断 ^^;)
●宣言方法
宣言はフォーム(*.frm)のコードの一番上に書きます。
例)マウスポインタの位置(座標)を取得するAPI
サンプルのダウンロード
Private Type POINTAPI
X As Long
Y As Long
End Type
Private Declare Function GetCursorPos Lib "user32" _
(lpPoint As POINTAPI) As Long
では、各々の単語の意味を説明しましょう
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
Private Type POINTAPI
X As Long
Y As Long
End Type
"POINTAPI"という構造体を宣言します。
これは↓の"GetCursorPos"というAPIに必要だからです。
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
Private Declare Function ... As Long
Longの値を返す関数であることを意味します。
もし、戻り値が必要ない場合は
Private Declare Sub ...
と宣言します(しかし、原則的にFunctionで宣言しましょう)
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
GetCursorPos Lib "user32"
"user32"というDLLの中の、"GetCursorPos"という関数を使うことを意味します。
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
lpPoint As POINTAPI
先ほど宣言した"POINTAPI"を"GetCursorPos"関数に渡すことを意味します。
●呼び出し方法
呼び出しはプロシージャ内で行います。
例)マウスポインタの位置(座標)を取得するAPIを呼び出す
サンプルのダウンロード
Dim point As POINTAPI ' point を POINTAPI として宣言
Dim ret As Long ' ret を long として宣言
' ↓はGetCursorPosを呼び出している (point に結果が代入される)
ret = GetCursorPos(point)
●API&DLLの命令を知るには...
これは、調べるしかありません。
確実なのは「MSDN ライブラリ」ですが、膨大な量に圧倒されそうです。
また、C言語用の説明なのでVBで使うのは慣れ(?)が要ります。
ちょっと大きな書店にでも行けば、APIに関する書籍が山とあります。
しかし、たいていは数千円もします。
プログラミング環境だけで大金(?)を使って、さらに出費は痛い... T_T)
ということで、一般的な方法はインターネットでしょう。
オススメのソフトがあります。
「API Viewer Accele」というソフトで、
"APIビューアーを主とするVBでのアプリ開発のためのツール群"です。
これは、関数名・構造体名を入れるだけで宣言全体を表示&コピーしてくれます。
また、関数etcに説明書きを追加することもできます。
ダウンロードはAPI Viewer Accele←コチラから。
Vector様のページです。
VB Tipsのページに戻る
トップページに戻る
左側にフレームのINDEXが表示されていなければクリック!