【发布时间】:2013-09-08 16:02:04
【问题描述】:
我试图通过 C# 中的指针调用另一个正在运行的进程的函数,但不幸的是我找不到它的答案。 函数的内存地址总是一样的。
在 C++ 中我可以这样做:
#define DefinedMemoryAddress 0x123456
struct someStruct
{
int someInt;
float someFloat;
}
int main()
{
someStruct createdStruct = ...;
( (void (_stdcall*)(someStruct*)) DefinedMemoryAddress)( createdStruct );
}
有人可以帮我做一个 C# 版本吗?
【问题讨论】:
-
Windows 为每个进程提供自己的地址空间。这不可能奏效。你想完成什么?
-
你可以试试 Marshal.GetDelegateForFunctionPointer 从指针获取委托
-
我想从正在运行的进程中调用一个方法。该方法总是具有相同的地址,并且我知道它的基地址,所以我只需要调用它,但我不知道如何在 C# 中执行它
-
我现在要为您节省一些时间:如果您有可用的 c++ 代码,请在 C++/CLI 中执行并将其包装在托管类中。