2011-12-31 16 views
2

を書く、そのために私はproccessmemoryを読み書き呼び出す必要があり、 私はグーグルで検索し、宣言を見つけるには次のとおりです。読む/ Iは、メモリスキャナを作るしようとしていますProcessMemory宣言

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

私がしようとしていますそれを主な機能に入れて、主なものから外す。

しかし、私はいつもコンパイラエラーが発生します。

ReadProcesssMemoryを入手するにはどこに配置すればよいですか?

男が(私の下のポストを)私を助けた後、私はこのエラーを取得:型または名前空間名「DllImportAttribute」1

エラーが見つかりませんでした(あなたがusingディレクティブまたはアセンブリ参照が不足していますか? )

+0

コンパイラエラーはありますか?IntPtrタイプを使用することをお勧めします。長さと細部をお願いします。 –

+0

@ user1124295の場合は、ファイルの 'using'セクションに' System.Runtime.InteropServices'名前空間を追加してください。 –

答えて

4

あなたの宣言に誤りがあります。 ntPtr(関数の最初の引数)のような型はありません。

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

+3

@Oded、それはここで私にあまりにも多くの打撃を与えるtypoではありません。私たちはすべてタイプミスをします。それは、人々がエラーメッセージを読むことを好まないことです。特に、コンパイルされ強く型付けされた言語で。 –

+1

さて、StackOverflowであなたのタイプミスを指摘する方が簡単です... – Oded

関連する問題