2011-12-31 43 views
2

我试图让一个内存扫描仪,为我需要调用读写proccessmemory, 我在谷歌搜索,并找出声明:读/写ProcessMemory宣言

[DllImport("Kernel32.dll")] 
public static extern bool ReadProcessMemory(ntPtr hProcess, 
         IntPtr lpBaseAddress, byte[] lpBuffer, 
         UInt32 nSize, ref UInt32 lpNumberOfBytesRead); 

我想把它放在主要功能之外。

但我总是得到一个编译器错误。

我应该在哪里得到ReadProcesssMemory

的家伙后帮我(在我的职务),我得到这个错误:

错误1类型或命名空间名称“DllImportAttribute”找不到(是否缺少using指令或程序集引用? )

+0

什么编译器错误?线性数字和细节请。 – 2011-12-31 14:47:37

+0

@ user1124295,请确保已将'System.Runtime.InteropServices'命名空间添加到文件的'using'部分。 – 2011-12-31 15:10:32

回答

4

您在声明中出现错误。不存在ntPtr(函数的第一个参数)类型。您可能想要使用IntPtr类型:

using System; 
using System.Runtime.InteropServices; 

class Program 
{ 
    [DllImport("kernel32.dll")] 
    public static extern bool ReadProcessMemory(
     IntPtr hProcess, 
     IntPtr lpBaseAddress, 
     byte[] lpBuffer, 
     UInt32 nSize, 
     ref UInt32 lpNumberOfBytesRead 
    ); 

    public static void Main() 
    { 

    } 
} 
+2

毁灭的错字再次袭击! – Oded 2011-12-31 14:42:31

+3

@Oded,这不是打字错误在这里。我们都做错别字。人们不愿意阅读错误信息。特别是在编译和强类型语言。 – 2011-12-31 14:44:25

+1

那么,让StackOverflow上的某个人更容易指出您的拼写错误... – Oded 2011-12-31 14:46:52