Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo crear un hilo y llamar directamente a la función MessageBox?

¿Cómo crear un hilo y llamar directamente a la función MessageBox?

Win32 proporciona una serie de funciones API para completar la creación, suspensión, recuperación, terminación y comunicación de subprocesos. Algunas de las funciones importantes se seleccionarán para su descripción a continuación.

1. HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,

DWORD dwStackSize,

LPTHREAD_START_ROUTINE lpStartAddress,

LPVOID lpParameter,

DWORD dwCreationFlags,

LPDWORD lpThreadId);

Esta función crea un nuevo hilo en el espacio de proceso del proceso que llama y devuelve el identificador del hilo creado, con cada parámetro El la descripción es la siguiente:

lpThreadAttributes: un puntero a una estructura SECURITY_ATTRIBUTES, que determina los atributos de seguridad del subproceso y generalmente se establece en NULL

dwStackSize: especifica la profundidad de la pila; del hilo, generalmente Todos se establecen en 0;

lpStartAddress: indica la dirección de la función donde se encuentra el código cuando el nuevo hilo comienza a ejecutarse, es decir, la dirección inicial del hilo. La situación general es (LPTHREAD_START_ROUTINE) ThreadFunc, ThreadFunc es el nombre de la función del hilo

lpParameter: especifica los parámetros de 32 bits pasados ​​al hilo cuando se ejecuta el hilo, es decir, los parámetros del hilo; función de hilo;

dwCreationFlags: indicador adicional para controlar la creación de hilos, puede tomar dos valores. Si este parámetro es 0, el hilo comenzará a ejecutarse inmediatamente después de su creación; si este parámetro es CREATE_SUSPENDED, después de que el sistema genere el hilo, el hilo estará en un estado suspendido y no se ejecutará inmediatamente hasta que se llame a la función ResumeThread;

lpThreadId: Este parámetro devuelve el ID del hilo creado; si la creación es exitosa, devuelve el identificador del hilo, de lo contrario devuelve NULL.

2. DWORD SuspendThread(HANDLE hThread);

Esta función se utiliza para suspender el hilo especificado. Si la función se ejecuta con éxito, la ejecución del hilo finaliza.

3. DWORD ResumeThread(HANDLE hThread);

Esta función se utiliza para finalizar el estado suspendido del hilo y ejecutar el hilo.

4. VOID ExitThread(DWORD dwExitCode);

Esta función se utiliza para finalizar la ejecución del hilo y se llama principalmente en la función de ejecución del hilo. El parámetro dwExitCode se utiliza para establecer el código de salida del hilo.

5. BOOL TerminateThread(HANDLE hThread, DWORD dwExitCode);

Generalmente, una vez finalizado el hilo, la función del hilo regresa normalmente, pero la aplicación puede llamar a TerminateThread para terminar por la fuerza un determinado hilo. hilo. ejecución del hilo.

El significado de cada parámetro es el siguiente:

hThread: el identificador del hilo que se va a terminar

dwExitCode: se utiliza para especificar el código de salida del hilo.

Usar TerminateThread() para finalizar la ejecución de un subproceso no es seguro y puede causar inestabilidad en el sistema; aunque esta función finaliza inmediatamente la ejecución del subproceso, no libera los recursos ocupados por el subproceso. Por lo tanto, generalmente no se recomienda utilizar esta función.

6. BOOL PostThreadMessage(DWORD idThread,

UINT Msg,

WPARAM wParam,

LPARAM lParam

);

Esta función coloca un mensaje en la cola de mensajes del hilo especificado y regresa sin esperar a que el hilo procese el mensaje.

idThread: ID del hilo que recibirá el mensaje

Msg: especifica el mensaje utilizado para enviar

wParam: parámetro de palabra relacionado con el mensaje; ;

lParam: parámetro largo relacionado con el mensaje

Al llamar a esta función, si el hilo que está a punto de recibir el mensaje no crea un bucle de mensaje, la función fallará. para ejecutar.