六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

VC++編程完成廣告窗口自動(dòng)關(guān)閉

[摘要]摘要:本文對(duì)自動(dòng)關(guān)閉網(wǎng)絡(luò)廣告窗口的軟件實(shí)現(xiàn)原理及具體實(shí)現(xiàn)過程作了介紹。  關(guān)鍵字:廣告窗口、自動(dòng)關(guān)閉、Visual C++ 6.0   一、 引言  我們?cè)谏暇W(wǎng)瀏覽時(shí),有時(shí)訪問到某些網(wǎng)站的網(wǎng)頁(yè)時(shí)會(huì)自動(dòng)彈出一些廣告窗口,甚至有不少個(gè)人主頁(yè)為了利用網(wǎng)絡(luò)廣告來(lái)賺錢一下同時(shí)彈出幾個(gè)甚至十幾個(gè)廣告窗口。這些...
摘要:本文對(duì)自動(dòng)關(guān)閉網(wǎng)絡(luò)廣告窗口的軟件實(shí)現(xiàn)原理及具體實(shí)現(xiàn)過程作了介紹。

  關(guān)鍵字:廣告窗口、自動(dòng)關(guān)閉、Visual C++ 6.0

  一、 引言

  我們?cè)谏暇W(wǎng)瀏覽時(shí),有時(shí)訪問到某些網(wǎng)站的網(wǎng)頁(yè)時(shí)會(huì)自動(dòng)彈出一些廣告窗口,甚至有不少個(gè)人主頁(yè)為了利用網(wǎng)絡(luò)廣告來(lái)賺錢一下同時(shí)彈出幾個(gè)甚至十幾個(gè)廣告窗口。這些窗口一個(gè)一個(gè)的關(guān)掉十分麻煩,而且如果不關(guān)的話又會(huì)占用大量的系統(tǒng)資源,所以不少人對(duì)此深惡痛絕,作為程序員可以利用自身技術(shù)優(yōu)勢(shì)根據(jù)自己的實(shí)際需要編制一些很適合自己的小工具。因此本文就對(duì)如何通過軟件編程來(lái)實(shí)現(xiàn)對(duì)廣告窗口的自動(dòng)關(guān)閉進(jìn)行介紹,以期能起到拋磚引玉之效。

  二、 程序設(shè)計(jì)思路與實(shí)現(xiàn)

  首先要分析一下廣告窗口的一般特性。廣告窗口一般是通過主頁(yè)面里的Javascript腳本或VBScript 腳本語(yǔ)言來(lái)動(dòng)態(tài)彈出的,其實(shí)質(zhì)還是一個(gè)IE窗口。但絕大多數(shù)窗口在創(chuàng)建出來(lái)后是沒有菜單,工具條等其它東西的,因此我們可以先搜尋IE窗口,然后判斷其窗口是否有菜單和工具條等東西,如果沒有就認(rèn)為是廣告窗口了,雖然這樣的判斷不是十分的嚴(yán)格,但從實(shí)際使用情況來(lái)看雖然有時(shí)會(huì)誤關(guān)一些正常窗口,但發(fā)生的幾率是相當(dāng)小的。完全可以忽略。而且這種情況多發(fā)生在聊天室中,所以只需在聊天之前將其關(guān)閉,只在瀏覽網(wǎng)頁(yè)的時(shí)候運(yùn)行程序就一般不會(huì)發(fā)生誤操作了。

  程序的實(shí)現(xiàn)并不復(fù)雜,由于程序運(yùn)行起來(lái)后任意時(shí)刻彈出的廣告窗體都要隨時(shí)關(guān)閉,所以就應(yīng)當(dāng)通過設(shè)置定時(shí)器,每隔一段時(shí)間就搜尋以下當(dāng)前是否有廣告窗口,如果有就將其關(guān)閉,否則繼續(xù)監(jiān)視。因此可以在程序的初始化入口函數(shù)中用SetTimer()函數(shù)啟動(dòng)定時(shí)器。下面就結(jié)合實(shí)際代碼對(duì)部分關(guān)鍵代碼進(jìn)行講解:

  從第一個(gè)窗口開始對(duì)每一個(gè)窗口進(jìn)行枚舉搜索,如果第一個(gè)窗口存在那么就可以通過在while循環(huán)里的GetWindow(GW_HWNDNEXT);來(lái)搜尋下一個(gè)窗口,并在其內(nèi)判斷是否是廣告窗體,直至搜尋完最后一個(gè)窗體為止:

CWnd* pMainWnd = AfxGetMainWnd()->GetWindow(GW_HWNDFIRST);
while (pMainWnd)
{
 ……
 pMainWnd = pMainWnd->GetWindow(GW_HWNDNEXT);
}

  對(duì)于判斷是否是廣告窗口,可以用GetClassName()函數(shù)獲取窗口類型來(lái)判斷是否是IE窗口:

CString strClassName;
GetClassName(pMainWnd->m_hWnd,strClassName.GetBufferSetLength(100),100);

  對(duì)于那些不是IE類型的窗體根本不用加以考慮,可以將剛才得到的strClassName窗口類型同"IEFrame"進(jìn)行比較來(lái)進(jìn)行判斷,如果是IE窗口才可以進(jìn)行下一步的判斷:

//根據(jù)句柄獲取子窗口指針
CWnd* pChildWnd=CWnd::FromHandle(FindWindowEx(pMainWnd->m_hWnd,NULL,"Worker",NULL));
if(!pChildWnd)
 pChildWnd=CWnd::FromHandle(FindWindowEx(pMainWnd->m_hWnd,NULL,"WorkerA",NULL));

  如果子窗口存在,用類似的方法獲取下一個(gè)子窗口指針:

CWnd* pChildNextWnd=CWnd::FromHandle(FindWindowEx(pMainWnd->m_hWnd,pChildWnd->m_hWnd,"Worker",NULL));
if(!pChildNextWnd)
pChildNextWnd=CWnd::FromHandle(FindWindowEx(pMainWnd->m_hWnd,pChildWnd->m_hWnd,"WorkerA",NULL));

  如果該窗口存在,那么下步只要驗(yàn)證當(dāng)前窗口可視就可以斷定其的確屬于廣告窗口,可以通過GetWindowLong()獲取到當(dāng)前的窗口風(fēng)格,然后通過邏輯運(yùn)算可以判斷出當(dāng)前窗口是否具有WS_VISIBLE可視效果:

if(pChildNextWnd)
{
 if(!(GetWindowLong(pChildWnd->m_hWnd,GWL_STYLE)&WS_VISIBLE))
 {
  pTempWnd=NULL;
  pTempWnd=pMainWnd;
  //關(guān)閉廣告窗口
  ……
  return;
 }
}

  現(xiàn)在已經(jīng)可以準(zhǔn)確判斷出哪個(gè)是廣告窗口了,只需將其關(guān)閉即可,前段代碼已經(jīng)將我們想關(guān)閉的窗口指針保存到變量pTempWnd中,因此我們可以通過簡(jiǎn)單的向其發(fā)送WM_CLOSE消息就可以徹底將其關(guān)閉了:

pTempWnd->PostMessage(WM_CLOSE,0,0);

  三、 小結(jié)

  本文僅對(duì)于關(guān)閉廣告窗口的核心代碼作了介紹,在實(shí)際編程中需要考慮到許多實(shí)際的因素,比如為了節(jié)省屏幕占用空間,最好將其做成系統(tǒng)托盤模式;由于需要長(zhǎng)期駐留內(nèi)存所以要盡量把程序大小控制好,并且采用Release發(fā)行版本等等。本文所述內(nèi)容有一定的通用性,可以將其用于監(jiān)視某項(xiàng)進(jìn)程,當(dāng)該進(jìn)程啟動(dòng)后由程序來(lái)觸發(fā)某個(gè)事件來(lái)對(duì)其進(jìn)行處理等等。


主站蜘蛛池模板: 日韩电源| 全部免费国产潢色一级 | 四虎亚洲 | 中文字幕第9页 | 四虎永久在线免费观看 | 色综合久久久久 | 日韩在线视频免费看 | 日韩操比视频 | 手机看片久久 | 日韩射吧| 青草视频免费观看在线观看 | 四虎院影永久在线观看 | 青草香蕉精品视频在线观看 | 四虎伊人 | 午夜精品福利影院 | 亚洲有码区 | 青青青国产精品手机在线观看 | 亚洲欧美久久婷婷爱综合一区天堂 | 热の综合热の国产热の潮小说 | 日本无吗免费一二区 | 日本在线免费观看 | 青青草原伊人网 | 色婷婷久| 日本三级视频在线观看 | 在线日韩视频 | 青青青青爽极品在线视频 | 青青草视频免费看 | 在线观看日本视频 | 四虎影院紧急入口 | 视频h在线观看 | 日韩专区中文字幕 | 日韩欧美一区二区不卡看片 | 日本高清www视频在线观看 | 手机看片国产福利 | 视频二区 调教中字 知名国产 | 日本高清高色 | 在线另类| 一级做a爰片久久毛片人呢 一级做a爰片久久毛片免费看 | 日本久久久久久久久久 | 午夜在线不卡 | 日韩一区二区不卡 |