|
||
解説: Windows には kernel32.dll や user32.dll など、API を提供するための DLL があり、アプリケーションはこの中のプログラムコードを呼び出して特定の機能を実現しています。 LoadLibrary 関数と GetProcAddress 関数を実装することで、DLL に入っている API 関数が呼び出せます。C++Builder でインクルードファイルやライブラリファイルが定義されていない場合でも、API 関数を使うことができるようになります(インクルードファイル、ライブラリファイルが定義されている場合はこちら)。 この呼び出し方法を知っておくと、相当役立ちますので、覚えておくことをお勧めします。 関連情報が 「解凍ソフトは難しい!」 にもありますので参考にしてください。 使用例: アプリケーション起動後、Button1 をクリックして、shlwapi.dll から 「パスを文字数指定で省略する」 関数を呼び出します。呼び出しに成功するとメッセージが返ります。 準備としては、Button をひとつ配置するだけです。 まず呼び出したい関数を typedef 戻り値の型 (関数名)(引数の型); という書式で定義しておきます。 Button1 の OnClick イベントハンドラで、 LoadLibrary 関数を使って DLL の存在を確認します。 PATHCOMPACTPATHEX 型の変数を用意して、GetProcAddress 関数で API 関数を呼び出します。メッセージが返ったら、目的の処理を行います。 FreeLibrary で後始末して終わりです。 他の API 関数も呼び出せますので、試してみてください。 typedef BOOL (*PATHCOMPACTPATHEX)(LPTSTR, LPCTSTR, UINT, DWORD); //------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { HINSTANCE hDLL = LoadLibrary("shlwapi.dll"); if (hDll == NULL) { ShowMessage("'shlwapi.dll' がありません。"); return; } PATHCOMPACTPATHEX PathCompactPathEx; PathCompactPathEx = (PATHCOMPACTPATHEX)GetProcAddress( hDLL, "PathCompactPathExA"); if (PathCompactPathEx != NULL) { ShowMessage("API 関数を呼び出しました。"); // 目的の処理 } FreeLibrary(hDLL); } //------------------------------------------------------------------- |