VC realiza el cierre automático de ventanas publicitarias
1. Introducción
Cuando navegamos por Internet, a veces aparecen automáticamente algunas ventanas publicitarias cuando visitamos las páginas web de determinados sitios web. Incluso hay muchas páginas de inicio personales para poder visitarlas. Utilice publicidad en línea. Gane dinero abriendo varias o incluso una docena de ventanas publicitarias al mismo tiempo. Es muy problemático cerrar estas ventanas una por una, y si no se cierran, ocuparán muchos recursos del sistema, por lo que muchas personas odian esto como programadores, pueden usar sus propias ventajas técnicas para compilar algunas ventanas que sí lo están. Adecuado para usted según sus necesidades reales. Por lo tanto, este artículo presentará cómo realizar el cierre automático de ventanas publicitarias a través de la programación de software, con la esperanza de servir como punto de partida.
2. Ideas de diseño e implementación del programa
En primer lugar debemos analizar las características generales de la ventana publicitaria. La ventana de publicidad generalmente aparece dinámicamente a través del script Javascript o el lenguaje de script VBScript en la página principal. Es esencialmente una ventana de IE. Sin embargo, la mayoría de las ventanas no tienen menús, barras de herramientas y otras cosas después de su creación. Por lo tanto, primero podemos buscar la ventana de IE y luego determinar si la ventana tiene menús, barras de herramientas y otras cosas. ventana Aunque este juicio no es muy estricto, a juzgar por el uso real, aunque algunas ventanas normales a veces pueden cerrarse por error, la posibilidad de que esto suceda es bastante pequeña. Se puede ignorar por completo. Y esta situación ocurre a menudo en salas de chat, así que simplemente ciérrelo antes de conversar y ejecute el programa sólo mientras navega por la web, y generalmente no ocurrirán operaciones incorrectas.
La implementación del programa no es complicada, ya que la ventana de publicidad que aparece en cualquier momento después de ejecutar el programa debe cerrarse en cualquier momento, debes configurar un temporizador para buscar los siguientes anuncios en. Intervalos regulares: si hay una ventana, ciérrela; de lo contrario, continúe monitoreando. Por lo tanto, puede utilizar la función SetTimer() para iniciar el temporizador en la función de entrada de inicialización del programa.
La siguiente es una explicación de algunos códigos clave basados en el código real:
Comience desde la primera ventana para enumerar y buscar en cada ventana. Si la primera ventana existe, puede usar GetWindow en el bucle while (. GW_HWNDNEXT); para buscar la siguiente ventana y determinar si es un formulario publicitario, hasta que se busque el último formulario:
CWnd* pMainWnd = AfxGetMainWnd()-GetWindow(GW_HWNDFIRST
<); p> while (pMainWnd){
pMainWnd = pMainWnd-GetWindow(GW_HWNDNEXT);
}
Para determinar si es una ventana publicitaria, puede utilizar la función GetClassName() para obtener el tipo de ventana y determinar si es una ventana de IE:
CString strClassName;
GetClassName(pMainWnd-m_hWnd, strClassName .GetBufferSetLength( 100), 100);
No es necesario considerar aquellas ventanas que no son del tipo IE. Puede comparar el tipo de ventana strClassName que acaba de obtener con "IEFrame" para hacer un juicio. Solo si es una ventana de IE Haga el siguiente juicio:
//Obtenga el puntero de la ventana secundaria según el identificador
CWnd* pChildWnd=CWnd::FromHandle(FindWindowEx(pMainWnd- m_hWnd, NULL, "Trabajador", NULL ));
if(!pChildWnd)
pChildWnd=CWnd::FromHandle(FindWindowEx(pMainWnd-m_hWnd, NULL, "TrabajadorA", NULL));
Si la ventana secundaria existe, use un método similar para obtener el puntero de la siguiente ventana secundaria:
CWnd* pChildNextWnd=CWnd::FromHandle(FindWindowEx(pMainWnd-m_hWnd). , pChildWnd-m_hWnd, "Trabajador", NULL) );
if(!pChildNextWnd)
pChildNextWnd=CWnd::FromHandle(FindWindowEx(pMainWnd-m_hWnd, pChildWnd-m_hWnd, " WorkerA", NULL));
Si la ventana existe, entonces el siguiente paso es verificar que la ventana actual sea visible para determinar que efectivamente es una ventana publicitaria. Puede obtener el estilo de la ventana actual a través de GetWindowLong() y luego use operaciones lógicas para determinar si la ventana actual tiene WS_VISIBLE Efecto visual:
if(pChildNextWnd)
{
if(!( GetWindowLong(pChildWnd-m_hWnd, GWL_STYLE)WS_VISIBLE))
{
pTempWnd=NULL;
pTempWnd=pMainWnd;
// Cerrar la ventana de publicidad
volver;
}
}
Ahora podemos determinar con precisión cuál es la ventana de publicidad que solo necesitamos. para cerrarla. El código anterior ha guardado el puntero de la ventana que queremos cerrar en la variable pTempWnd, para que podamos.
Puedes cerrarlo completamente simplemente enviándole un mensaje WM_CLOSE:
pTempWnd-PostMessage(WM_CLOSE, 0, 0);
3. El artículo solo presenta el código central para cerrar la ventana publicitaria. En la programación real, se deben tener en cuenta muchos factores prácticos. Por ejemplo, para ahorrar espacio en la pantalla, es mejor hacerlo en el modo de bandeja del sistema; necesidad de retención de memoria a largo plazo. Por lo tanto, intente controlar el tamaño del programa tanto como sea posible y utilice versiones de lanzamiento, etc. El contenido descrito en este artículo tiene cierta generalidad y se puede utilizar para monitorear un determinado proceso. Cuando se inicia el proceso, el programa activará un evento para procesarlo, etc.