2011-12-31 86 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