Programación General > Delphi

 Finalizar Un Thread De Mi Aplicación

(1/2) > >>

zeraf_:
Hola que tal, quería preguntar si hay alguna forma de finalizar un proceso de mi aplicación si solo tengo el Handle y el ThreadID del proceso. tal vez enviandole algun mensaje pero no se como, si alguien me puede ayudar.. gracias  ;)

Enko:
usa la funcion SendMessage de WinApi32

--- Citar ---LRESULT SendMessage(          HWND hWnd,
    UINT Msg,
    WPARAM wParam,
    LPARAM lParam
);
hWnd
[in] Handle to the window whose window procedure will receive the message. If this parameter is HWND_BROADCAST, the message is sent to all top-level windows in the system, including disabled or invisible unowned windows, overlapped windows, and pop-up windows; but the message is not sent to child windows.
Msg
[in] Specifies the message to be sent.
wParam
[in] Specifies additional message-specific information.
lParam
[in] Specifies additional message-specific information.


--- Fin de la cita ---

Seria algo así:

--- Código: Text ---   SendMessage(hWnd, WM_DESTROY, 0,0);  supongo que deberia funcionar.
hWnd: tendria que ser el Handel, sino la id del proceso.

zeraf_:
Que tal Enko, primero que todo gracias por responder, bueno ya había realizado algunas pruebas con SendMessage, como la que me planteas, pero no pude finalizar el proceso.

Lo que necesito es parar un thread o hacer que termine. Hice un ejemplo para realizar pruebas y escribi por ejemplo en el Execute de un thread esto:

--- Código: Text --- procedure TPrograma.Execute;begin  UnEdit.Text := 'uno';  Suspend;  if not terminated then    UnEdit.Text := 'dos';end;  Mientras tengo el thread suspendido quiero finalizarlo e impedir que ponga por ejemplo el 'dos' en la caja de texto, pero no he logrado conseguirlo, sería enviarle un mensaje de terminar al thread pero no se como, en todo caso gracias por la ayuda que me puedan dar.


O, digamos que tengo una variable de tipo TPrograma, pero fuera del thread, en la unit de la form, y quiero por ejemplo pasar por un parámetro en el create del thread esta variable pero sería por referencia para modificar dentro del thread para que sea igual a Self, o al proceso actual, como puedo hacer esto?.

Saludos

zeraf_:
:D ya encontré la forma de resolver el problema, xD no había visto las funciones hasta que me dio por probar y por fin,  en todo caso muchas gracias Enko.

Así lo resolví:

 TerminateThread(HandledelThread,0);//para terminar
 ResumeThread(HandledelThread);//para resumir
 ...

Enko:
Me alegro que lo hayas encontrado, te soy sincero, nunca trabaje con threads poruqe no tuve necesidad. :rolleyes:

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa