On Oct 20, 2017, at 12:54 PM, Michael C <mysecretrobotfact...@gmail.com> wrote: > > Hello Tim, everyone: > > I actually have a semi-working scanner, but I can't figure out why it doesn't > return > nearly as many addresses as Cheat Engine does.(for scan run #1) Let's say I > am scanning the Calculator that comes with Windows.
The Windows calculator uses an arbitrary-precision math library to store its numbers. It does not store them as double-precision floats. You are only looking at PAGE_READWRITE memory. Processes also have read-only memory that you can scan, but not change. When I suggested using a buffer, what I meant is that you should allocate a buffer of about a megabyte, then read a megabyte at a time from the other process, and scan through that memory in your code. That's much faster than making millions and millions of kernel calls. You may not be aware of what goes on behind the scenes when you do ReadProcessMemory. At any given time, only one process at a time (per CPU) can have its memory space in the page tables, and if it's not in the page tables, it can't be accessed. Thus, when you call ReadProcessMemory, the kernel has to switch to that other process as if it were going to start running, load its page tables, copy the memory into kernel space, switch back to your process and load its page tables, copy the data back to you, then start you running again. That's a lot of overhead. — Tim Roberts, t...@probo.com Providenza & Boekelheide, Inc. _______________________________________________ python-win32 mailing list python-win32@python.org https://mail.python.org/mailman/listinfo/python-win32