Red de conocimiento informático - Problemas con los teléfonos móviles - Uso de la API de vb

Uso de la API de vb

Atributo VB_Name = "modsysPID"

Opción explícita

'*************************** *** **********

'* Sin comentarios

'* Autor:jpkb@qq com

'* Abrir fuente, conserve la información del autor.

'* 2008.11.7

'*********************** ******* *************

Función de declaración privada CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Función de declaración privada TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) Mientras

Función de declaración privada CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long

Función de declaración privada OpenProcess Lib "kernel32" (ByVal dwDesiredAccess mientras sea larga, ByVal bInheritHandle mientras, ByVal dwProcessId mientras) mientras

Función de declaración privada privada ProcessFirst Lib "kernel32" Alias ​​​​"Process32First" (ByVal hSnapShot siempre y cuando, uProcess como PROCESSENTRY32) mientras

Función de declaración privada ProcessNext Lib "kernel32" Alias ​​"Process32Next" (ByVal hSnapShot mientras, uProcess como PROCESSENTRY32) mientras

Función de declaración privada GetModuleFileNameEx Lib "psapi .dll" Alias ​​​​"GetModuleFileNameExA" (ByVal hProcess As Long, ByVal hModule As Long, ByVal lpFilename As String, ByVal nSize As Long) As Long

Función de declaración privada EnumProcessModules Lib "psapi.dll" (ByVal hProcess As Long, ByRef lphModule As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long

Función de declaración privada Process32First Lib "kernel32" (PorVa

l hSnapShot Mientras, uProcess Como PROCESSENTRY32) Mientras

Función de declaración privada Process32Next Lib "kernel32" (ByVal hSnapShot Mientras, uProcess Como PROCESSENTRY32) Mientras

Función de declaración privada ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, uProcess As Long, ByVal lpBaseAddress Como cualquiera, ByRef lpBuffer Como cualquiera, ByVal nSize As Long , lpNumberOfBytesWritten As Long) As Long

Función de declaración privada NtQueryInformationProcess Lib "ntdll" (ByVal ProcessHandle As Long, ByVal ProcessInformationClass As Long, ByRef ProcessInformation As Any, ByVal lProcessInformationLength As Long, ByRef lReturnLength As Long) As Long

Tipo público PROCESSENTRY32

dwSize durante el tiempo

cntUsage durante el tiempo

th32ProcessID durante el tiempo

th32DefaultHeapID durante el tiempo

th32ModuleID es largo

cntThreads es largo

th32ParentProcessID es largo

pcPriClassBase es largo

dwFlags es largo

szExeFile es cadena * 500

Tipo final

Tipo público PROCESS_BASIC_INFORMATION

Estado de salida siempre que

Dirección PebBase como Largo

AffinityMask Como largo

BasePriority Como largo

UniqueProcessIdAs Largo

HeredadoDeUniqueProcessId Como largo

Tipo de fin

Const pública PROCESS_QUERY_INFORMATION = 1024

Const pública STANDARD_RIGHTS_ REQUIRED Mientras = &HF0000

Const pública SINCRONIZAR Mientras = &H100000

Pública Constante PROCESS_ALL_ACCESS como

Largo = (STANDARD_ RIGHTS_REQUIRED O SYNCHRONIZE O &HFFF)

Const pública PROCESS_TERMINATE = & H1

Const pública TH32CS_SNAPHEAPLIST = 1

Const pública TH32CS_SNAPPROCESS = 2 p>

Const pública PROCESS_VM_READ = 16

Const pública TH32CS_SNAPTHREAD = &H4

Const pública TH32CS_SNAPMODULE = &H8

Const pública TH32CS_SNAPALL = ( TH32CS_SNAPHEAPLIST o TH32CS_SNAPPROCESS o TH32CS_SNAPTHREAD o TH32CS_ SNAPMODULE)

Const pública TH32CS_INHERIT = & H80000000

Const pública MAX_PATH como entero = 260

Const pública SW_NORMAL = 1

Const pública SW_MAXIMIZE = 3

Const pública SW_MINIMIZE =6

Constante pública SW_SHOW = 5

Función pública GetProcessCmdLine(ByVal PID siempre ) As String

'Volver a la línea de comando del programa

Dim strBuffer As String End If

CloseHandle hProcess

strBuffer = Left$( strBuffer, InStr (strBuffer, Chr(0) & Chr(0)))

GetProcessCmdLine = StrConv(strBuffer, vbFromUnicode)

Función final

Pública Función GetProcessPath( ByVal PID As Long) As String

'Devuelve la ruta del proceso.

En caso de error, Ir a Z

Atenuar cbNeeded mientras

Atenuar szBuf(1 a 250) mientras

Atenuar Ret mientras

Dim szPathName As String

Dim nSize As Long

Dim hProcess As Long

hProcess = OpenProcess(&H400 O &H10, 0 , PID)

Si hProcess <> 0 Entonces

Ret = EnumProcessModules(hProcess, szBuf(1), 250, cbNeeded)

Si Ret <> 0 entonces

szPathName = Space(260)

nSize = 500

Ret = GetModuleFileNameEx(hProcess, szBuf(1), szPathName, nSize)

GetProcessPath = Left(szPathName,

Finalizar si

Finalizar si

Ret = CloseHandle(hProcess)

Si GetProcessPath = "" Entonces

GetProcessPath = "SISTEMA"

Finalizar si

Salir de la función

Z:

GetProcessPath = " ERROR"

Función final

Función pública GetProcessPID(sEXEName As String, ByVal ID opcional As Long = 1) Siempre que

'ID sea sexEName en el proceso ID de lista.

Valor PID de retorno

Atenuar hPS mientras sea largo, xx mientras lo haga

Atenuar pe32 como PROCESSENTRY32

Atenuar el búfer como cadena * 255, cargado como booleano

Atenuar la mano mientras, EXEName como cadena

Atenuar el bucle mientras, myID mientras

hPS = CreateToolhelp32Snapshot(TH32CS_ SNAPPROCESS, 0)

Si hPS = -1 Luego sale de la función

pe32.dwSize = Len(pe32)

theloop = ProcessFirst(hPS, pe32)

Mientras theloop & lt;> 0 '

hand = OpenProcess(PROCESS_TERMINATE, True, CLng(pe32.th32ProcessID))

EXENam = pe32.szExeFile

myID = pe32.th32ProcessID

Si UCase(Left(EXEName, Len(sEXEName)) = UCase(sEXEName) Entonces

xx = xx + 1

Si ID = xx Entonces

GetProcessPID = myID

CloseHandle hPS

Función de salida

Finalizar si

Finalizar si

theloop = ProcessNext(hPS, pe32)

Wend

CloseHandle hPS

Función final