Allows you to manipulate memory addresses directly....

VB Code:
  1. '\\ API declarations...
  2. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Long, Source As Long, ByVal Length As Long)
  3. Private Declare Sub CopyMemoryByte Lib "kernel32" Alias "RtlMoveMemory" (Destination As Byte, Source As Long, ByVal Length As Long)
  4. Private Declare Sub CopyMemoryFromByte Lib "kernel32" Alias "RtlMoveMemory" (Destination As Long, Source As Byte, ByVal Length As Long)

These are then used in standard functions thus:

VB Code:
  1. Public Function Peek(Address As Long) As Long
  2.  
  3. Call CopyMemory(Peek, ByVal Address, Len(Address))
  4.  
  5. End Function
  6.  
  7. Public Function PeekByte(Address As Long) As Byte
  8.  
  9. Call CopyMemoryByte(PeekByte, ByVal Address, Len(PeekByte))
  10.  
  11. End Function
  12. Public Function Poke(Address As Long, Value As Long)
  13.  
  14. CopyMemory ByVal Address, Value, LenB(Value)
  15.  
  16. End Function
  17.  
  18.  
  19. Public Function PokeByte(Address As Long, Value As Byte)
  20.  
  21. CopyMemoryFromByte ByVal Address, Value, LenB(Value)
  22.  
  23. End Function

Example of use....
VB Code:
  1. Dim lTest As Long
  2.  
  3. lTest = 100
  4. Debug.Print lTest
  5.  
  6. Poke VarPtr(lTest), 300
  7.  
  8. Debug.Print lTest