PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 25 → EXEMPLO DE USO DE API DO WINDOWS
EXEMPLO DE USO DE API DO WINDOWS
Iniciado por Boller, jun., 24 2020 7:31 PM - Sem resposta
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em junho, 24 2020 - 7:31 PM
// Uniquement Pour NT/2000/XP
// **********************

PROCESS_TERMINATE est un entier = 0x0001
PROCESS_CREATE_THREAD est un entier = 0x0002
PROCESS_SET_SESSIONID est un entier = 0x0004
PROCESS_VM_OPERATION est un entier = 0x0008
PROCESS_VM_READ est un entier = 0x0010
PROCESS_VM_WRITE est un entier = 0x0020
PROCESS_DUP_HANDLE est un entier = 0x0040
PROCESS_CREATE_PROCESS est un entier = 0x0080
PROCESS_SET_QUOTA est un entier = 0x0100
PROCESS_SET_INFORMATION est un entier = 0x0200
PROCESS_QUERY_INFORMATION est un entier = 0x0400
PROCESS_SUSPEND_RESUME est un entier = 0x0800

hwndprocess est un entier
nomprocess est une chaîne ASCIIZ de 1024
nbprocess est un entier
ind est un entier

lpidProcess est un tableau dee 100 entiers
cb est un entier = Dimension(lpidProcess) * 4
cbNeeded est un entier

PROCESS_MEMORY_COUNTERS est une structure
cb est un entier
PageFaultCount est un entier
PeakWorkingSetSize est un entier
WorkingSetSize est un entier
QuotaPeakPagedPoolUsage est un entier
QuotaPagedPoolUsage est un entier
QuotaPeakNonPagedPoolUsage est un entier
QuotaNonPagedPoolUsage est un entier
PagefileUsage est un entier
PeakPagefileUsage est un entier
FIN

p_m est un PROCESS_MEMORY_COUNTERS

p_m:cb = Dimension(p_m)


// énumération des différents process
API ( "Psapi" , "EnumProcesses" , &lpidProcess , cb , &cbNeeded )

// nombre de process trouvés
nbprocess = cbNeeded / 4

POUR ind = 1 A nbprocess

// accès au process
hwndprocess = API ( "kernel32" , "OpenProcess" , PROCESS_QUERY_INFORMATION , Faux , lpidProcess[ind] )
SI hwndprocess ALORS

// on rempli la structure pour le process
API ( "Psapi" , "GetProcessMemoryInfo" , hwndprocess , &p_m , Dimension(p_m) )

// on cherche le nom du process
API ( "Psapi" , "GetProcessImageFileNameA", hwndprocess , &nomprocess , 1024 )

// on ferme l'accès au process
API ( "kernel32" , "CloseHandle" , hwndprocess )

// on extrait le nom de la chaine retournée
nomprocess = ExtraitChaîne ( nomprocess , 1 , "\" , DepuisFin )

// ajout dans la table mémoire
TableAjoute ( Table1 , nomprocess + TAB + p_m:WorkingSetSize/1024 )

SINON

TableAjoute(Table1, erreurmessage() )

FIN // si hwndprocess

FIN // boucle ind = 1 a nbprocess



Pour récupérer seulement le Process en cours, utilisez juste :

hwndprocess = API ( "kernel32" , "GetCurrentProcess" ) ET le code suivant le SI hwndprocess ALORS




La Procedure erreurmessage() SI ca vous interresse


Procedure erreurmessage()

FORMAT_MESSAGE_IGNORE_INSERTS est un entier = 0x00000200
FORMAT_MESSAGE_FROM_SYSTEM est un entier = 0x00001000

message_erreur est une chaîne ASCIIZ sur 512

API( "kernel32" , "FormatMessageA" , FORMAT_MESSAGE_FROM_SYSTEM + FORMAT_MESSAGE_IGNORE_INSERTS , ...
Null , API( "kernel32" , "GetLastError" ) , 0 , &message_erreur , 512 , Null )

RENVOYER message_erreur


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/