SDK 付属の DLL を利用するには?

解決


石川  2005-02-09 03:41:06  No: 119500

Microsoft から入手した SDK を利用して開発をしようと思っています。
僕は初心者で VB をはじめたばかりです。

私用環境は Windows2000 SP4、VB6 SP6 です。

SDK 付属のドキュメントには VB のサンプルコードが載っているのですが
これは同じく SDK 付属の DLL を利用しているようです。 VB のソースコード
の中からこの DLL を呼ぶのだと思うのですがどうすればいいのでしょうか?

調べてみると、たとえば hoge.dll の場合

Declare Function ほにゃらら "hoge.dll" (ほにゃらら) As ほにゃらら

こんな感じになっています。このほにゃにゃらにあたる部分に
どう書くかはどうやって調べればいいのでしょうか?

本当は SDK から引用したいのですが、NDA に触れるか分からないので
こんな書き込みになってしまいました。よろしくお願いします。


030  2005-02-09 06:04:47  No: 119501

Declare Function ほにゃらら "hoge.dll" (ほにゃらら) As ほにゃらら
をVBから呼ぶ場合には

Dim ret As ほにゃらら
ret=ほにゃらら(ほにゃらら)

って書きます。


石川  2005-02-09 07:07:21  No: 119502

ありがとうございます。
僕の質問が的確でなかったようでした。 DLL を呼ぶためには

> Declare Function ほにゃらら "hoge.dll" (ほにゃらら) As ほにゃらら

のように書くと思うのですが、このほにゃららに当たる部分
には何をどう書けばいいのでしょうか? DLL によってい違う
と思うのですが、それはどう調べればいいのでしょうか?


030  2005-02-09 08:07:52  No: 119503

hoge.dllのマニュアルをよんで下さい


石川  2005-02-09 21:31:57  No: 119504

ありがとうございました。


Dental  2005-02-09 21:46:25  No: 119505

> Declare Function ほにゃらら "hoge.dll" (ほにゃらら) As ほにゃらら
> こんな感じになっています。このほにゃにゃらにあたる部分に
> どう書くかはどうやって調べればいいのでしょうか?

もし、C/C++言語用のヘッダファイル(*.h)があれば、それを見て下さい。
その内容を、VBの
  Declare Function 関数名 "dll名" (引数定義) As 戻り値
の構文に置き換えて行くことになります。

たとえば、簡単なところで「Beep」というAPI関数がありますが、
これは、Windows Platform SDK の WINBASE.H ファイルの中で、
  WINBASEAPI
  BOOL
  WINAPI
  Beep(
    DWORD dwFreq,
    DWORD dwDuration
  );
のように定義されています。あるいは、SDKのドキュメントに、
  BOOL Beep(
    DWORD dwFreq,      // 音の周波数
    DWORD dwDuration   // 音の持続時間
  );
と書かれていますので、こちらを見て頂いても良いでしょう。

まず、最初の BOOL は 戻り値の型。その後の Beep は関数名です。
そして括弧の中には、引数定義で、引数の型(DWORD)と
引数名(dwFreq,dwDuration)が並んでいます。ここまでは良いですよね。

ここで、VB6のデータ型への置き換え作業が必要になります。
これについては、下記の記事などが役にたつでしょう。
http://hira.hopto.org/win32api/convert01.htm
http://www.int21.co.jp/pcdn/vb/onepoint/knvol083.html

で、上記と付き合わせて型を書き換えると、
  BOOL型 → ByVal Longに相当
  DWORD型 → ByVal Longに相当
という事がわかりますので、結果として、
  Declare Function Beep "dll名" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
のようになるわけです。なお、DLL名は Kernel32.dll です。

# DLL名については、ヘッダファイルからはわかりませんので、
# 他の資料をあたるなどして、別途調査する必要があります。

お使いのSDKの内容がわからないので、何とも言えませんが、
定義が単純なAPIなら、上記のようにして置き換えられると思います。

ただ、実際にはこんなに単純に置き換えられる物ばかりではありません。

中には、ある程度のCの知識とVBの知識が揃っていないと、
呼び出しにくいAPIもありますので、ある程度、APIの使い方が
分かってきたら、書籍などで勉強してみてください。

# 個人的には、http://www.amazon.co.jp/exec/obidos/ASIN/4881357905 などがお勧め。
# 中〜上級者向けの本なので、読むには、ある程度の事前知識が必要ですが。


石川  2005-02-09 23:01:56  No: 119506

大変丁寧な説明ありがとうございます。
どうやって調べていいのかがとてもよく分かりました。
確かに SDK には C/C++ 用のヘッダファイルも付いていました。
それを見て調べたいと思います。上達したらダニエル・アップルマン
の本も読んでみようと思います。ありがとうございました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加