問題タブ [getprocaddress]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - GetProcAddress について
MyDll.dll とその関数を以下のように定義しました
別のプロジェクトで関数を使用しようとすると、関数のアドレスを取得できませんGetProcAddress()
。これが私のコードです:
次のような出力が得られます。
しかし、glut32.dll のような既知の DLL とその関数を試してみると、正常に動作しています。
のような機能に問題があるのではないかと思います
この点で誰かが私を助けることができますか?
dll - dllやexeファイルとは異なる動作をするgetprocaddress
GetProcAddressを使用してGetProcAddressのアドレスを取得しようとしています(はい、それ自体で呼び出します)。空のexeプロジェクトから実行すると、有効なアドレス(kernel32の割り当てられたアドレスの間)を取得します。
dllから呼び出していると、無効なアドレスを取得しています(割り当てられたkernel32の範囲内ではありません)
違いはなんですか?私は64ビットのWindows7で実行しています。
プロジェクトは32ビットとしてコンパイルされます。これが私が実行しているコードです:
typedef FARPROC(WINAPI * GetProcAddressType)(HMODULE、LPCSTR);
HMODULE kernel32Hmodule = LoadLibraryW(L "c:\ windows \ system32 \ kernel32.dll");
GetProcAddressType abc =(GetProcAddressType)GetProcAddress(kernel32Hmodule、 "GetProcAddress");
また、次のようなアドレスを取得しようとしました。void * a = GetProcAddress; しかし、dllから実行すると同じ無効なアドレスが返されます...
助けてください。
delphi - FireMonkey アプリケーションで宣言されていない識別子 'GetProcAddress'
Firemonkey フレームワークを介して Delphi XE2 を使用してプラグイン システムを作成しようとしています。問題は、GetProcAddress is undeclared identifier というエラーが表示されることです。VCL プロジェクトで GetProcAddress を使用しようとすると、すべて正常に動作するため、GetProcAddress と Firemonkey アプリでの使用方法について話すときの VCL と Firemonkey の違いは何ですか。
ありがとう
function - GetProcAddress関数でMessageBoxを呼び出す方法は?
そのような方法で MessageBox() 関数を呼び出したい:
1)。必要なライブラリをロードします
2)。関数アドレスを取得する
3)。あれを呼べ
したがって、私が理解しているような目的のために、 MessageBox 関数ですべての型の引数を持つ新しい型を定義する必要があります。
INT を返し、HWND、LPCSTR、LPCSTR、UNIT を受け入れます。
だから私は新しいタイプを登録しました:
そのような関数の呼び出しに問題があります。そのような方法はすべての機能で機能しますか、それともエクスポートされた場合にのみ機能しますか?
そのような方法で MessageBox を正確に呼び出すにはどうすればよいですか?
完全なコード:
c++ - getProcAddress - NULL が返される
次のコードがあります。
init_stdout が NULL であることがわかりました。何が問題になる可能性がありますか? ハンドルはOKです(NULLではありません)ありがとう
delphi - 別のプロセスのプロシージャ/関数アドレスを取得する
開いているすべてのプロセスのスレッドリストを表示するプログラムを書いています。
同様のプログラム (Process Explorer) を使用すると、スレッド ID、優先度、開始アドレスなどの情報を含むスレッド リストを表示できます。
これらの情報もすべて取得できますが、Process Explorer には次のように開始アドレスが表示されます。
ProcedureName
GetProcAddress を使用するために dll を挿入せずに取得するにはどうすればよいですか?
c++ - VB-dll を作成し、C++ アプリケーションにロードする
丸 1 週間格闘している問題がありますが、自分では解決できません。私はググって、あらゆる種類のフォーラムを検索してきました...「これはうまくいくかもしれない」ということをたくさん見つけて、試してみましたが、うまくいきませんでした。誰か手がかりがあれば、助けてください!
外部ソースから、C++ アプリケーションから使用できるようにする必要がある、VB で記述された多くのクラスと関数を入手しました。私の最初のことは次のとおりです。問題ありません。VB コードを dll に変換し、C++ プログラムからロードします。これは想像以上に大変でした。私の C++ プログラムは Visual Studio で記述されていませんが、簡単にするために、Visual Studio C++ アプリケーションから (Visual Studio 2010 で記述された) VB dll を読み込もうとすることから始めました。これまでの私のコードは次のとおりです。
VB コード : DllModule : クラス ライブラリ プロジェクト
DllModule.vb
DllModule.def
C++ コード : TryVbDllLoad : コンソール アプリケーション
TryVbDllLoad.cpp
dll をロードできますが、GetProcAddess はエラー コード 127 で NULL を返します (指定されたプロシージャが見つかりませんでした)。
VB アプリケーションから dll を読み込もうとしました。これは機能します (.def ファイルがなくても)。しかし、C++ アプリケーションが使用できる適切なエントリ ポイントが作成されていないと推測しています (Dependency Walker で dll を開くと、エントリ ポイントや関数が表示されません)。「COM相互運用に登録」を使用して、または使用せずにVBコードをコンパイルしようとしました。
1) 私は何を間違っていますか?
2) これを適切に解決する良い方法がない場合、dll を作成する代わりに何ができますか? C++ アプリケーションで VB クラスと関数を使用できる他の方法はありますか?
敬具
サラ
ご回答ありがとうございました!
ただし、dll に何らかのエラーがあるはずです。登録しようとすると、regsvr32 を使用しているため、「モジュール C:/tmp/DllModule.dll が読み込まれましたが、DllRegisterServer の開始アドレスが見つかりませんでした。確認してください。 C:/tmp/DllModule.dll は有効な DLL ファイルまたは OCX ファイルであり、再試行してください。」
また、私が使用するとき
#import "C\tmp\DllModule.dll"
私は得る
fatal error C1083: Cannot open type library file: 'c:\tmp\dllmodule.dll'
チュートリアルのリンクを見ましたが、小さな問題があります。すべてのプロジェクト タイプから選択できる「ActiveX DLL」などはありません。はい、私は Visual Studio 2010 Professional を持っています (試用版ですが)。
- サラ
c - GetProcAddress奇妙な差出人住所
次のコードがntdll.dll内にポインタを返す理由を誰かが説明しますか?
PS:kernel32のエクスポートテーブルが指す関数を呼び出すと、ブレークポイントがスローされます。
c++ - 簡単なもの:StructメンバーのGetProcAddress?
DLLに次の構造体の定義があるとしましょう。
その後、DLLをロードするメインアプリケーションから次のことを実行できます。
私の質問は、次のようなことを行うことが可能かどうかです。
- あなたが私が欲しいものを理解し、それが可能であるならば; 構文は何ですか?
- それが不可能な場合; なぜ?
- あなたが私の質問を理解していない場合; コメントでそう言ってください!
よろしく、答えを期待しています!