El ejemplo descrito en este artículo es una API para que VB lea memoria, subprocesos y identificadores. Es de cierta ayuda para la programación de VB que involucra las operaciones subyacentes del sistema. Los lectores que lo necesiten pueden consultarlo. Esta API puede obtener el ID del subproceso, la memoria de escritura, incluido el identificador del proceso, la dirección del área de memoria ByVal, los datos, la longitud total, la longitud completa y el proceso de lectura, incluido el identificador del proceso, la dirección del área de memoria ByVal y la ubicación de almacenamiento de los datos leídos. La longitud a leer, la longitud que se ha leído, la asignación de memoria (identificador de proceso, dirección [simplemente agregue un 0 parece ser suficiente], longitud, permiso 1 [MEM_COMMIT], permiso 2 [PAGE_READWRITE]) retorno: el inicios de memoria asignada Dirección de inicio y otras funciones.
El código de implementación específico es el siguiente:
Atributo VB_Name = "API" Opción ExplicitPublic Declarar Función GetDesktopWindow Lib "User32.DLL" () Como LongPublic Declarar Función FindWindow Lib "User32.DLL" Alias "FindWindowA" (ByVal ClassName Como Cadena, ByVal Caption Como Cadena) Como LongPublic Declarar Función GetWindow Lib "User32.DLL" (ByVal hwnd As Long, ByVal wCmd As Long) As LongPublic Declare la función GetWindowText Lib "User32.DLL" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As LongPublic Const GW_CHILD = (5)Public Const GW_HWNDNEXT = ( 2) Función de declaración pública GetWindowThreadProcessId Lib "User32.DLL" (ByVal hwnd As Long, ProcessId As Long) As Long' Obtener ID de subproceso (identificador, ID de subproceso devuelto) Función de declaración pública OpenProcess Lib "Kernel32.DLL" (permiso de operación ByVal As Long, manija de herencia ByVal As Long) , ID de subproceso ByVal siempre que sea largo) Función de declaración pública larga ReadProcessMemory Lib "Kernel32.DLL" (ByVal Mango del proceso As Long, ByVal Ubicación de la memoria As Long, Buffer As Any, ByVal Longitud As Long, lpNumberOfBytesWritten As Long) As Long'Read proceso (identificador del proceso, dirección del área de memoria ByVal, lectura de la ubicación de almacenamiento de datos, longitud tomada para leer, longitud que se ha leído [0]) Función de declaración pública WriteProcessMemory Lib "Kernel32.DLL" (procesamiento ByVal tan largo, ubicación de memoria como cualquiera, Búfer como cualquier, longitud de ByVal tan larga, lpNumberOfBytesWritten tan larga) como memoria de escritura larga (identificador de proceso, dirección del área de memoria de ByVal, datos, longitud total, longitud completada [0]) Función de declaración pública CloseHandle Lib "Kernel32.DLL" (ByVal identificador de proceso Mientras) Mientras 'Liberar (identificador de proceso)' causará un error si no se libera Public Const STANDARD_RIGHTS_REQUIRED = &HF0000Const pública SYNCHRONIZE = &H100000Const pública RRAD_WRITE = &H1F0FFFPConst pública PROCESS_VM_OPERATION = &H8&Lectura constante pública = &H10&Escritura constante pública = &H20&'---------Conversión variableAPIPublic Declare Sub MOV Lib "Kernel32.DLL " Alias "RtlMoveMemory" (Variable 1 como cualquiera, Variable 2 como cualquiera, Longitud ByVal tan larga)'---------Liberación de asignación de protección de memoria Función de declaración pública VPE Lib "Kernel32.DLL" Alias " VirtualProtectEx" (manejo del proceso ByVal mientras sea largo, dirección como cualquier, longitud de ByVal mientras sea larga, ByVal flNewProtect mientras sea larga, lpflOldProtect mientras sea larga) como LongPublic Declarar función VAE Lib "Kernel32.DLL" Alias "VirtualAllocEx" (manejador de proceso ByVal As Long, dirección ByVal As Long, longitud ByVal As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) Como La asignación de memoria larga (identificador de proceso, dirección [simplemente coloque un 0 parece ser suficiente], longitud, permiso 1 [MEM_COMMIT], permiso 2 [PAGE_READWRITE]) devuelve: la dirección inicial de memoria asignada Función de declaración pública VFE Lib "Kernel32 DLL" Alias "VirtualFreeEx" (manejador de proceso ByVal As Long, dirección ByVal As Long, longitud ByVal As Long, tipo de versión ByVal As Long) As LongPublic Const MEM_COMMIT = &H1000Public Const PAGE_READWRITE = &H4Public Const STILL_ACTIVE = &H103&Public Const INFINITE = &HFFFF'---------Obtener ubicación de la función del módulo APIPublic Declarar función GetModuleHandle Lib "Kernel32.DLL" Alias "GetModuleHandleA" (ByVal ModuleName As Cadena) tan largaPúblico Declarar la función LoadLibrary Lib "Kernel32.DLL" Alias "LoadLibraryA" (ByVal ModuleName como cadena) como LongPublic Declarar la función GetProcAddress Lib "Kernel32.DLL" (ByVal hModule como Long, ByVal ProcName como cadena) como LongPublic Declarar la función CreateRemoteThread Lib " Kernel32. DLL" (identificador del proceso ByVal como Largo, lpThreadAttributes como cualquier, ByVal dwStackSize mientras, ByVal lpStartAddress mientras, lpParameter como cualquiera, ByVal dwCreationFlags mientras, lpThreadID mientras) Función de declaración pública GetTickCount Lib "kernel32" () mientras