VB6.0でSetForegroundWindow関数を使用するには?

解決


ゆうき  2003-07-08 16:24:46  No: 107734  IP: [192.*.*.*]

タスクトレイにアプリを常駐させ、右クリックした時にポップアップメニューが表示されます。そこでフォーム以外の場所をクリックした際に、そのポップアップメニューを消したいのでSetForegroundWindow関数を使用しているのですが、実行途中で「実行時エラー'49'Dllが正しく呼び出せません」というエラーが出てしまいます。
どのようにしたら良いでしょうか、宜しくお願い致します。

編集 削除
nanashi  2003-07-08 17:08:05  No: 107735  IP: [192.*.*.*]

ヘルプは見ましたか?
MSDNによると、

  ・DLL のルーチンを呼び出す際に引き渡す引数の型が違っています。
    すべての引数の型が、呼び出すルーチンの宣言で指定されているものと一致するかどうかを確認します。

  ・DLL のルーチンを呼び出す際に引き渡す引数の数が違っています。
    引数の数が、呼び出すルーチンの宣言で指定されているものと一致するかどうかを確認します。

  ・DLL のルーチンを呼び出す際に、StdCall 呼び出し規約が使用されていません。
    DLL ルーチンの引数が値渡しである場合は、このルーチンの引数を宣言するときにキーワード ByVal を指定しているかを確認します。

  ・Windows DLL の Declare ステートメントに CDecl が含まれています。

とのこと。
APIの宣言を確認してみて下さい。

編集 削除
ゆうき  2003-07-08 19:09:48  No: 107736  IP: [192.*.*.*]

nanasiさん、アドバイス有難うございます。
そこで引数の型を調べたらそれは大丈夫でした。
標準モジュールに宣言を書いていたのですが、しばらく眺めてたら
Declare Function SetForegroundWindow Lib "user32" _ 
(ByVal hWnd as Long)
とだけしか記入してなくて最後の as Long がぬけておりました・・・
その後、
初心者の私のご相談にのって頂いて大変感謝しております。
どうもありがとうございました。

編集 削除