C/Visual C - cerrar IExplorer

 
Vista:

cerrar IExplorer

Publicado por jose (7 intervenciones) el 15/03/2006 19:29:23
Buenos dias,
Estoy trabajando con visual C++. He logrado abrir internet explorer con lo siguiente:

ShellExecute(NULL, // Me da error si pongo: GetSafeHwnd( ) ,
"open",
"http://www.lawebdelprogramador.com",
NULL,
NULL,
SW_SHOWDEFAULT );

El problema es que no se como cerrarlo, alguien me puede decir como puedo cerrarlo? Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:cerrar IExplorer

Publicado por fernando.gomez (1603 intervenciones) el 16/03/2006 23:10:21
Si en lugar de emplear el ShellExecute empleas el CreateProcess, tendrás acceso al ID de proceso del explorer (con la estructura de salida de CreateProcess). Con ese ID, puedes mandar llamar a TerminateProcess, y con eso matas al IE cuando quieras.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:cerrar IExplorer

Publicado por fernando.gomez (1603 intervenciones) el 16/03/2006 23:31:10
Otra opción es la siguiente.

Cualquier ventana en Windows tiene una ventana padre a la que pertenece. Cuando trabajas con la ventana principal de la aplicación, ésta también tiene padre, y es el escritorio de Windows. Así pues, la idea es que obtengas el padre (con GetDesktopWindow) y sobre esta ventana, iteres a través de todos los hijos (entre los que estará tu propia ventana, la barra de tareas, el botón de Inicio, etc). A través del nombre de ventana (i.e. "Internet Explorer") obtienes el handle del IE, iterando sobre todos los hijos del escritorio.

Así, lo único que te restaría es enviar un mensaje WM_CLOSE con el handle del IE.

El siguiente es algo que hice para cerrar el explorer en una PocketPC, espero te sirva de guía.

HWND hDesktop;
HWND hCurrent;
TCHAR szWinName[50];

memset(szWinName, 0, 50);

hDesktop = ::GetDesktopWindow();
for (hCurrent = ::GetWindow(hDesktop, GW_HWNDFIRST);
hCurrent != NULL;
hCurrent = ::GetWindow(hCurrent, GW_HWNDNEXT))
{
::GetWindowText(hCurrent, szWinName, 50);
if (!_tcscmp(szWinName, _T("File Explorer")))
{
::SendMessage(hCurrent, WM_CLOSE, NULL, NULL);
}
}

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar