问题标签 [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.

0 投票
1 回答
576 浏览

dll - vb6中如何调用dll导出函数?

如何在 vb6 中调用 dll 导出功能?CallWindowProc 已限制在参数中。例如如何调用这个功能?

0 投票
2 回答
702 浏览

c# - How to load dll dynamically and pass/get value to it?

In DllImport I can do this:

But I want to decide which dll to load at run time. So I'm not using DllImport but try this:

But how can I define Sub as int Sub(int a, int b); like I'm using DllImport?

0 投票
1 回答
1497 浏览

c# - C# 程序调用 C# dll

我想使用 C# exe 动态加载由 C# 或 C++ 构建的 dll,C++ dll 部分已完成,但 C# dll 尚未完成,因为 exe 在 C# dll 中找不到方法。

这是我将构建 CSharp.dll 的 C# dll 代码:

这是我的 C# exe 代码:

如果我正在加载 Cpp.dll,if ((int)intPtr == 0)则将为假,而加载 CSharp.dll 将为真,所以我猜我需要编辑string FuncName = "NamespaceName@ClassName@MethodName";其他内容。我怎样才能解决这个问题?

0 投票
3 回答
429 浏览

c++ - 如何在 C++ 中动态定义成员函数

我有这个对象,它只是 Windows 中外部 dll 的包装器。在创建对象时,构造函数会在注册表中查询键,然后使用 dll 查询该键的值以查找文件夹,然后加载 dll,获取此 dll 的初始化程序的 ProcAddress 并对其进行初始化。

然后,我想向其他客户提供这个 dll 的所有功能,所以我的类包装器提供了成员函数来检查我们是否有GetProcAddress '它,如果没有,那么我们就这样做,获取指向这个函数的指针,然后调用它。

我不想在构造函数时执行所有 GetProcAddress,因为有数百个函数,并且很可能给定的客户端只需要一小部分,所以 GetProcAddress 一切都是浪费。

但是现在,我需要定义这些函数,感觉就像一个巨大的复制粘贴。所有成员函数都在做完全相同的事情,比如

这真的感觉像是一个非常次优的解决方案。我觉得必须有某种方法来模板化所有这些代码,以便在编译时正确生成。或者也许最初的方法不是最好的开始,我不确定。

0 投票
2 回答
776 浏览

c++ - 如何使用 WinDbg 查找“GetProcAddress”函数的过程名称

我想用来GetProcAddress在加载的 DLL 中获取一些函数地址。x我在 PSAPI 库上运行了一些尝试,我可以看到预期的 proc 名称与我在 WinDbg语句中找到的符号名称不同。例如,我寻找“EnumProcessModules”(这是GetProcAddress方法预期的名称)x psapi!*EnumProcessModules*,我发现

当我将上面找到的任何符号(带有或不带有“PSAPI!”作为前缀)GetProcAddress作为第二个参数(procName)提供给该方法时 - 它返回 NULL,但是当我使用方法名称“EnumProcessModules”时 - 它返回 0xfe111030 ,即“PSAPI!EnumProcessModulesStub”的地址。

procName我怎么能提前知道预期?如果我在一个 DLL 中有 2 个具有相同方法名称的不同类或命名空间怎么办?调用时如何区分这两个方法名称GetProcAddress

0 投票
1 回答
554 浏览

java - 如何将 GetProcAddress 与 JNA 一起使用?

首先,我是JNA新手。我想通过 Java 代码控制主板的 LED 灯。华硕为此提供了一个用 C(C++?)编写的 SDK。

他们的头文件看起来很简单:

我使用 JNAerator 来获取 JNA 映射,这是我得到的结果:

在示例 C++ 代码中,他们使用 GetProcAddress 来获取上述方法的地址,这样他们就可以调用它们:

我如何对 JNA 做同样的事情?

提前致谢。

0 投票
0 回答
29 浏览

dll - 如何显式加载通常在编译时链接的 DLL 文件?

我有一个库(PythonXX.dll),需要在运行时有条件地加载。为了支持它,有大量的包含文件和超过一千次调用。

好消息是我可能只使用了大约 20-30 个,但设置所有这些 GetProcAddress() 调用仍然很痛苦。我还希望/需要使用带有本机名称的例程(例如,PyNumber_Long,而不是 MyPyNumber_Long)。

有没有更好或更首选的方法来做到这一点?

0 投票
1 回答
183 浏览

c - 如何动态加载每个需要的功能

我正在尝试找到一种方法来动态加载我需要使用的每个 Windows API 函数。例如,要使用printf函数,我会执行以下操作:

这是一个快速编码的工作片段。这样做很容易,因为我按照指南告诉我可以printfcrtdll.dll. 但是,现在我想加载该CreateFileA函数,但我不知道如何找到要加载的正确 dll。

我已经尝试用 Google 搜索一些东西并在 MSDN 上进行搜索,但我没有找到任何东西。一般来说,给定一个函数(一个常见的函数,例如 in 或 中的一个windows.hstdio.hstdlib.h我如何找到要加载的 dll?

注意 我知道你们中的一些人可能认为这种方式加载功能没有用。然而,这不是真正的程序。在真实的情况下,地址LoadLibraryAGetProcAddress是手动找到的,我可以编写代码然后从 PE 中导出段。

0 投票
1 回答
139 浏览

c - 从使用非标准路径加载的 DLL 加载符号,该路径转发到另一个 DLL

我正在尝试动态加载不在正常搜索路径上的 DLL (python3.dll)。我可以使用更改的搜索路径加载它,但是当我这样做时GetProcAddress,它失败了(因为我正在加载的函数转发到另一个 DLL,python37.dll)。

我认为我需要做的是GetProcAddress遵循与原始 DLL 加载相同的搜索逻辑,但我不知道如何在不改变系统的情况下做到这一点PATH(正如我的代码一样,它还有各种其他潜在问题让用户运行自己的代码,这需要原始路径)。

有没有一个干净的解决方案?

这是我尝试过的代码:

添加SetDllDirectory()似乎没有帮助,但我只是将它的调用转储到代码中,因为我不是 100% 清楚它是如何工作的,所以我可能做错了什么。

作为参考, Py_Main 符号的定义是

0 投票
2 回答
168 浏览

c++ - 为什么 GetProcAddress 不能与 OutputDebugString 函数一起使用

我一直在尝试使用GetProcAddresskernel32.dll 中的几个函数。它工作得很好,除了“OutputDebugString”函数。

我的代码: