有没有大神进来帮小弟一把 在线等
如何用C#读取其他应用程序中的数据 --------------------编程问答-------------------- WIN32API:ReadProcessMemory --------------------编程问答--------------------
+1
学习啦 --------------------编程问答-------------------- 具体怎么用的能说下吗? --------------------编程问答-------------------- 你要读别的程序的什么数据? --------------------编程问答--------------------
能具体说下吗 --------------------编程问答--------------------
比如说读取QQ上的好友 --------------------编程问答--------------------
。。。 --------------------编程问答--------------------
不可以实现吗? --------------------编程问答-------------------- 进程间取数据很复杂 再说C#一般没这需求 --------------------编程问答-------------------- 其实我就想实现这个 C#没办法实现吗 --------------------编程问答-------------------- 这个没办法,除非你知道它在内存中的地址 --------------------编程问答-------------------- 读取qq好友 --------------------编程问答-------------------- 刚写了个示例读取 5940号进程,4326268地址的一个32位整数,需要读取其他进程内存的也许有用
[DllImport("kernel32.dll")]--------------------编程问答--------------------
private static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, IntPtr lpBuffer, Int32 nSize, IntPtr lpNumberOfBytesRead);
[DllImport("kernel32.dll")]
private static extern bool VirtualProtectEx(IntPtr hProcess, IntPtr lpAddress, Int32 dwSize, Int32 flNewProtect, IntPtr lpflOldProtect);
[DllImport("kernel32.dll")]
private static extern IntPtr OpenProcess(Int32 dwDesiredAccess, Int32 bInheritHandle, Int32 dwProcessId);
[DllImport("kernel32.dll")]
private static extern bool CloseHandle(IntPtr hObject);
private void button3_Click(object sender, EventArgs e)
{
IntPtr lpBuffer = Marshal.AllocHGlobal(4);
IntPtr lpReadBytes = Marshal.AllocHGlobal(4);
IntPtr hProc = OpenProcess(2035711, 1, 5940);
IntPtr lpAddress = (IntPtr)4326268;
IntPtr lpflOldProtect = Marshal.AllocHGlobal(4);
VirtualProtectEx(hProc, lpAddress, 4, 4, lpflOldProtect);
ReadProcessMemory(hProc, lpAddress, lpBuffer, 4, lpReadBytes);
int oldProtect = (int)Marshal.PtrToStructure(lpflOldProtect, typeof(Int32));
VirtualProtectEx(hProc, lpAddress, 4, oldProtect, lpflOldProtect);
CloseHandle(hProc);
Int32 n = (Int32)Marshal.PtrToStructure(lpBuffer, typeof(Int32));
MessageBox.Show(n.ToString());
Marshal.FreeHGlobal(lpBuffer);
Marshal.FreeHGlobal(lpReadBytes);
Marshal.FreeHGlobal(lpflOldProtect);
}
没什么,只是觉得这个难度系数很大 --------------------编程问答-------------------- 看高手回答问题就是一种学习 --------------------编程问答-------------------- 消息队列可以实现应用应用程序之间的通信。 --------------------编程问答-------------------- --------------------编程问答-------------------- C#的功能是出其意料的强大啊 --------------------编程问答--------------------
不是很懂地址内存和进程号 大神求助 能不能加我个QQ或者给我留个QQ请教你 --------------------编程问答--------------------
不是很懂地址内存和进程号 大神求助 能不能加我个QQ或者给我留个QQ请教你
补充:.NET技术 , C#