API OpenProcess

La API OpenProcess se utiliza para obtener un handle para un proceso en ejecución desde un ID de proceso
El handle es un puntero “inteligente” que hace referencia a bloques de memoria, de esta forma OpenProcess obtiene un puntero que hace referencia al bloque de memoria donde se encuentra el proceso.
El ID de proceso es un identificador para los procesos que se ejecutan en el sistema, el ID de proceso permite identificar un proceso entre el conjunto de procesos del sistema, mientras que el handle nos permite identificar la ubicación del proceso en la memoria.

Parametros

dwDesiredAccess:

nos permite definir las posibilidades de acceso que queremos tener para el proceso, las opciones posibles son las siguientes

  • PROCESS_ALL_ACCESS   =&H1F0FFF para habilitar todas las opciones.
  • PROCESS_CREATE_THREAD   =&H2 para habilitar el uso del handle en la función CreateRemoteThread para crear un hilo(thread) en el proceso.
  • PROCESS_DUP_HANDLE   =&H40 para habilitar el uso del handle ya sea como source o target en la función DuplicateHandle para duplicar un handle.
  • PROCESS_QUERY_INFORMATION =&H400 para habilitar el uso del handle en las funciones GetExitCodeProcess y GetPriorityClass para leer información del objeto del proceso.
  • PROCESS_SET_INFORMATION =&H200 para habilitar el uso del handle en la función SetPriorityClass para establecer el nivel de prioridad del proceso.
  • PROCESS_TERMINATE =&H1 para habilitar el uso del handle en la función TerminateProcess para terminar el proceso.
  • PROCESS_VM_OPERATION =&H8 para habilitar el uso del handle en las funciones VirtualProtectEx y WriteProcessMemory para modificar la memoria virtual del proceso.
  • PROCESS_VM_READ      =&H10 para habilitar el uso del handle en la función ReadProcessMemory para leer en la memoria virtual del proceso.
  • PROCESS_VM_WRITE  =&H20 para habilitar el uso del handle en la función WriteProcessMemory para escribir en la memoria virtual del proceso.
  • SYNCHRONIZE    =&H100000 para habilitar el uso del handle en cualquiera de las funciones wait para esperar a que el proceso termine.

Se pueden utilizar varios de estos valores juntos utilizando un mas(+) entre cada valor por ejemplo

hProcess = OpenProcess(PROCESS_QUERY_INFORMATION+SYNCHRONIZE,False,pid)

 

bInheritHandle:

Define la herencia del handle, puede ser True o False

dwProcessId:

Es el ID del proceso del cual se desea obtener su handle.

 

Uso en VBA

Para utilizar la API la declaramos de la siguiente manera

Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Const PROCESS_TERMINATE As Long = (&H1) 'Para poder utilizar el handle para cerrar el proceso

y la llamamos de esta forma

hProcess = OpenProcess(PROCESS_TERMINATE, True, pid)

 

Anuncios

Un pensamiento en “API OpenProcess

  1. Pingback: Gestión de Procesos (Imprimir PDFs) « Código Excel

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s