掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
実行時にエラー「DLLが正しく呼び出せません」が出ます。 (ID:107350)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
最初に少し話題を整理したいと思いますが、 はぎーさんの発言で >「EnumWindows(全てのウインドウを列挙する)」をD.L.して使用した際に とあるのに、同じ発言で >Ret = EnumChildWindows(hWnd, AddressOf EnumChildProc, 0) と、「EnumChildWindows」を使用しています。 次のはぎーさんの発言で、 >Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, lPalam As Long) As Long とあるので、 EnumWindowsだったと解釈しています (と、言うより両方やって両方同じエラーだったのかもしれませんね。) そこで混乱してしまったようで、 たかみちえさんも > lpEnumFuncですけど、本当は >> BOOL CALLBACK EnumWindowsProc( >> HWND hwnd, // 親ウィンドウへのハンドル >> LPARAM lParam // アプリケーションで定義された値 >> ); > 上のように定義されています。 と、EnumWindows「Proc」の宣言を見てしまったようです。 ちょっと重箱の隅をつつくようですが、 この辺の誤解を解いておいたほうがいいと思いましたので。 さて、肝心の話ですが、 これら(EnumWindowsとEnumChildWindows)のCALLBACK関数に 操作させる関数は、 第一引数にHWND,第二引数にLPARAMをとるようです。(少なくともWinXPでは) ところが、EnumWindowsのサンプルプロジェクトでは >Public Function Rekkyo(ByVal Handle As Long) As Boolean と宣言されており、(以前のバージョンのウィンドウズでは動いたのかもしれません) 引数が渡せないため、エラーが起こったのだと思います。 ので、 Public Function Rekkyo(ByVal Handle As Long,lparam As Long) As Boolean とすることで、エラーを回避することができます。 (As longよりAs Objectのほうがいいのかも。) EnumChildWindowsのほうも、同様に、第二引数を追加して Public Function EnumChildProc(ByVal hWnd As Long, lparam As Long) As Long とすれば、動きます。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.