版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 家庭電腦監(jiān)控系統(tǒng)的設(shè)計(jì)與分析中文摘要隨著計(jì)算機(jī)應(yīng)用的普及,越來越多的家庭擁有了計(jì)算機(jī)極大的提高了生活質(zhì)量,然而在計(jì)算機(jī)給家庭帶來諸多方便的同時(shí)也給不少家庭帶來了不安全的負(fù)面因數(shù),如孩子上網(wǎng)瀏覽不健康的網(wǎng)頁,癡迷于游戲等等。美國已經(jīng)有很大一部分家庭對孩子用電腦進(jìn)行了監(jiān)控,我們設(shè)計(jì)的家庭電腦監(jiān)控是專門為家長了解與控制孩子使用電腦的系統(tǒng)。我們的系統(tǒng)在運(yùn)行時(shí)可以隱藏界面跟進(jìn)程,在不知不覺中監(jiān)控你的電腦運(yùn)行情況,能夠監(jiān)控文件的使用記錄、屏幕圖像記錄、訪問網(wǎng)頁記錄、qq聊天記錄、msn聊天記錄、飛行聊天記錄、網(wǎng)站屏蔽、電腦運(yùn)行時(shí)間控制等。能夠幫助你了解孩子的思想狀況并及時(shí)的幫助與教育孩子。 關(guān)鍵字:鉤子
2、(hook)、線程、動態(tài)庫、注冊表 the analysis and design of home computer monitoring systemabstractwith the popularization of the computer application, more and more families have computer, which greatly improve the quality ofife, the computer brings so much convenience to family, but at the sametime,it brings the
3、 insafe and negative fators, for example, the child browses the unhealthy website on the internet, addict to game and so on. in america, most of the families already have watch and control when the children use the computer ,the computer watch and control system is a system we design only for parent
4、s to watch and control when the children use the computer. our system can hid its interface and course when it is running, watch and control your computer undiscovered, it can watch and control the record of the file using, the record of the screen, the record of visited website, the chat record of
5、qq, the chat record of msn, the chat record of fetion, website shield, and the run time of the computer and so on. it can help you to know your children's thought and to help and educate your children on time.keyword: hook;thread; regedit; dynamic link librar 目 錄中文摘要1abstract2目 錄11 前言11.1 選題背景11
6、.2 選題意義11.3 家庭電腦監(jiān)控的發(fā)展趨勢22 家庭電腦監(jiān)控系統(tǒng)的相關(guān)開發(fā)技術(shù)32.1 visual c+6.0技術(shù)32.2注冊表技術(shù)52.3動態(tài)庫(dll)技術(shù)62.4. 鉤子(hook)技術(shù)72.5 多線程技術(shù)133 家庭電腦監(jiān)控系統(tǒng)的總體設(shè)計(jì)163.1 需求分析163.2 模塊總體設(shè)計(jì)174 家庭電腦監(jiān)控的詳細(xì)設(shè)計(jì)194.1主界面的設(shè)計(jì)與實(shí)現(xiàn)194.2數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)254.3文件使用記錄的設(shè)計(jì)與實(shí)現(xiàn)284.4電腦運(yùn)行時(shí)間的設(shè)計(jì)與實(shí)現(xiàn)304.5 隱藏進(jìn)程的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)334.6 電腦啟動時(shí)自動運(yùn)行家庭電腦監(jiān)控的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)39致 謝42參 考 文 獻(xiàn)43家庭電腦監(jiān)控系統(tǒng)的分析與設(shè)
7、計(jì)1 前言家庭電腦監(jiān)控系統(tǒng)是一個針對所有電腦擁有者的的一個應(yīng)用系統(tǒng),特別是一些希望了解孩子用電腦干了什么事情的系統(tǒng)。下面介紹一下課題的選題背景、選題意義及未來的發(fā)展趨勢。1.1 選題背景隨著計(jì)算機(jī)的應(yīng)用普及,千千萬萬的家庭在娛樂,通訊,學(xué)習(xí),工作等各方面實(shí)現(xiàn)了前所未有的信息化,極大地提高了生活質(zhì)量。 然而,在計(jì)算機(jī)給人們帶來諸多方便的同時(shí),您是否感受到它也給您的家庭帶來了許多“不安全”的負(fù)面因素?當(dāng)您離家在外的時(shí)候,您是否擔(dān)心孩子過多時(shí)間玩電腦游戲而耽誤了學(xué)習(xí)?互聯(lián)網(wǎng)內(nèi)容繁雜,您是否擔(dān)心孩子上網(wǎng)瀏覽到不健康內(nèi)容的網(wǎng)頁? 您是否擔(dān)心您的丈夫(妻子)在家中使用qq,msn聊天時(shí)而不小心墮入“外遇”
8、的陷井?您是否希望當(dāng)您不在家時(shí),您的電腦的使用情況盡在掌握之中?專家研究結(jié)果顯示,在美國12歲到17歲的青少年群體中,有87%的人會上網(wǎng),其中又有87%,數(shù)量約為1900萬的青少年在家里上網(wǎng)。 調(diào)查顯示,美國聯(lián)網(wǎng)家庭使用網(wǎng)絡(luò)過濾或監(jiān)控軟件的比例從2000年12月的41%提高到了2004年的54%,對網(wǎng)絡(luò)采取監(jiān)控行動的家庭從700萬增加為1200萬戶。由此說明,在美國,多數(shù)家庭對青少年上網(wǎng)實(shí)施監(jiān)控措施。1.2 選題意義二十一世紀(jì)是網(wǎng)絡(luò)的世紀(jì),網(wǎng)絡(luò)將以無與倫比的技術(shù)優(yōu)勢搶占時(shí)代制高點(diǎn)。隨著全球范圍的信息數(shù)字化、網(wǎng)絡(luò)化進(jìn)程的加快,一個嶄新的網(wǎng)絡(luò)社會已呼之欲出。當(dāng)社會發(fā)展的主流是以internet基礎(chǔ)
9、時(shí),人們利用計(jì)算機(jī)網(wǎng)絡(luò)構(gòu)成的環(huán)境作為活動與交流、商貿(mào)活動的場所,這樣的人群集合就可稱之為網(wǎng)絡(luò)社會(network society)。日益擴(kuò)大的網(wǎng)民人數(shù),日益增多的網(wǎng)站,日新月異的網(wǎng)絡(luò)技術(shù),日漸形成的網(wǎng)絡(luò)虛擬社會,網(wǎng)絡(luò)的發(fā)展為人類的道德進(jìn)步提供了難得的機(jī)遇,同時(shí)也對青少年的道德發(fā)展產(chǎn)生巨大的影響,負(fù)面的、消極的道德影響和由此產(chǎn)生的網(wǎng)絡(luò)道德失范行為也不可避免。任何新生事物的產(chǎn)生和發(fā)展總有積極的一面和消極一面。美與丑、傳統(tǒng)與現(xiàn)代等思想意識,價(jià)格觀念無不混雜于網(wǎng)絡(luò)文化中。事實(shí)讓我們不得不開始重新審視網(wǎng)絡(luò),我們不免開始懷疑:網(wǎng)絡(luò)到底帶給我們什么?我們天真好奇的孩子到底在網(wǎng)上干了些什么?我們應(yīng)該如何對待、
10、如何選擇這人類現(xiàn)代文明進(jìn)程中的新課題。在許多中小學(xué)生傾情于網(wǎng)上聊天和游戲,上網(wǎng)聊天和游戲?qū)λ麄儊碚f是輕車熟路。但除了網(wǎng)絡(luò)聊天游戲外,許多學(xué)生竟連電腦的基本操作都不會。作為高科技的電腦技術(shù),充當(dāng)信息時(shí)代排頭兵的網(wǎng)絡(luò),在孩子心目中只簡單地異化為一種新的游戲工具因此使用一套系統(tǒng)全面掌握和控制孩子的電腦使用情況是非常有必要的。我們精心設(shè)計(jì)的家庭電腦監(jiān)控系統(tǒng),為您解決后顧之憂!可以助你更好地全面掌握和控制孩子的電腦使用情況;如果發(fā)現(xiàn)孩子過份沉溺于游戲、聊天或不良網(wǎng)站,你可以充分利用軟件中的管理功能進(jìn)行管理,同時(shí)能了解記錄他(她)的qq以及msn等的即時(shí)聊天情況!解他(她)的思想動態(tài)!如有不良傾向,及早制
11、止!可以了解到他(她)訪問的網(wǎng)站和屏幕上的內(nèi)容,便于你日后查看。1.3 家庭電腦監(jiān)控的發(fā)展趨勢調(diào)查顯示,美國聯(lián)網(wǎng)家庭使用網(wǎng)絡(luò)過濾或監(jiān)控軟件的比例從2000年12月的41%提高到了2007年的54%,對網(wǎng)絡(luò)采取監(jiān)控行動的家庭從700萬增 1 e:a" 5%4oh 加為1200萬戶。由此說明,在美國,多數(shù)家庭對青少年上網(wǎng)實(shí)施監(jiān)控措施。隨著中國計(jì)算機(jī)的應(yīng)用普及,千千萬萬的家庭在娛樂,通訊,學(xué)習(xí),工作等各方面實(shí)現(xiàn)了前所未有的信息化,極大地提高了生活質(zhì)量。 尤其是在競 e>8aa3 n+爭日益激烈的今天,許多父母為了不讓孩子輸在起跑線上,在“電腦是二十
12、一世紀(jì)必備的三大技能之一“的預(yù)言的壓力下,以及電化教學(xué)的要 6jr8hj zb-+zu 求下,競相為孩子配備了電腦。但是,在計(jì)算機(jī)給人們帶來諸多方便的同時(shí),您是否感受到它也給您的家庭尤其是孩子教育帶來了許多“不安 ng hj. pxv cld全”的負(fù)面因素?當(dāng)您離家在外的時(shí)候,您是否擔(dān)心孩子過多時(shí)間玩電腦游戲而耽誤了學(xué)習(xí)?互聯(lián)網(wǎng)內(nèi)容繁雜,您是否擔(dān)心孩子上網(wǎng)瀏覽到不 _vi)|5x bl3kpy"p# 健康內(nèi)容的網(wǎng)頁?回答肯定是肯定的。對電腦進(jìn)程監(jiān)控肯定是一種趨勢,家庭電腦監(jiān)控系統(tǒng)在中國會得到普遍的應(yīng)用。2 家庭電腦監(jiān)控系統(tǒng)
13、的相關(guān)開發(fā)技術(shù)家庭電腦監(jiān)控系統(tǒng)的設(shè)計(jì)與開發(fā),整個過程應(yīng)用到許多技術(shù)。例如visual c+6.0、access數(shù)據(jù)庫、動態(tài)鏈接庫(dll)技術(shù)、鉤子(hook)技術(shù)、多線程技術(shù)等,下面介紹一下該系統(tǒng)實(shí)現(xiàn)過程中應(yīng)用到的相關(guān)理論與相關(guān)開發(fā)技術(shù)。2.1 visual c+6.0技術(shù)microsoft visual c 6.0是microsoft visual studio 6.0 家族成員之一,是visual c的最新版本。它不僅適用于windows編程,還為網(wǎng)絡(luò)編程、數(shù)據(jù)庫編程提供了強(qiáng)大的支持。與visual c5.0相比,visual c 6.0具有更快的編譯速度、更加友好的編輯界面和更加強(qiáng)大的
14、數(shù)據(jù)庫支持功能。 mfc(microsoft foundation classes)庫是microsoft為利用vc開發(fā)的windows應(yīng)用程序而提供的應(yīng)用程序框架,在這個框架的支持下,對于不同的應(yīng)用程序,編程的主要任務(wù)是填寫各自特殊部分的代碼。mfc由130多個類組成,這些類封裝了兩千多個api函數(shù)。mfc類庫主要包括兩組類,一組是一般用途類,它提供了許多有用的抽象類,如cfile類代表文件;cwnd類是窗口類,這些在windows的編程中有重要的作用。另一類是ole類(object linking and embeding對象的鏈接與嵌入),這一類專門用于ole的編程。使用mfc的有點(diǎn)有很
15、多,主要的優(yōu)點(diǎn)如下: 用類編程,將代碼和數(shù)據(jù)封裝在類中,大大減少了編程的復(fù)雜性。以前用windows的api編程,需要清楚2000多個函數(shù)的使用,而用mfc,只需要了解100多個類的用法,在這些類中,常用的只有幾十個。 通過繼承實(shí)現(xiàn)了基本的代碼重用。在mfc中定義了大量類,所以可以在編程中通過繼承來使用這些類。另外,mfc還在這些類中定義了大量的虛函數(shù),也就是說,對于這些函數(shù),不但可以保存它們原有的特性,還可以對這些函數(shù)進(jìn)行修改,使之具有新的特性。 提供大量的工具方便編程。在mfc中,可以使用appwizard(應(yīng)用程序向?qū)В﹣斫?yīng)用程序的框架,可以使用classwizard(類向?qū)В┰诔绦?/p>
16、中添加類、變量以及在程序中傳遞各種信息。用controwizard(控件向?qū)В﹦?chuàng)建可以在windows中注冊的控件等。 借助設(shè)計(jì)良好的類庫通??梢詼p少代碼規(guī)模。 使用mfc庫,編程者只需注意應(yīng)用程序與通用的windows程序不同的一些特性,而幾乎所有的應(yīng)用程序與windows之間的接口(包括窗口的建立與顯示)都是由程序框架來實(shí)現(xiàn)的。visual c 6.0 不僅是一個重要的c編譯器,它還提供了一套綜合的開發(fā)工具和良好的可視化編程環(huán)境microsoft visual studio 6.0 。在這個環(huán)境下,用戶可以簡便快捷的對c 和 c 應(yīng)用程序進(jìn)行各種操作,例如建立、打開、保存、編輯、編譯、鏈接
17、和調(diào)試等。visual c 的集成開發(fā)環(huán)境由窗口、工具欄、菜單、工具條、路徑和其他一些有用的部分構(gòu)成。由于visual c6.0提供了文本敏感菜單,工具條和快捷鍵等,因此開發(fā)平臺能夠在菜單內(nèi)容等方面自動對你當(dāng)前所做的工作做出反映。除了visual c6.0提供的標(biāo)準(zhǔn)開發(fā)平臺,用戶可以定制visual c的集成開發(fā)環(huán)境,以適應(yīng)具體的需要,如創(chuàng)建新的工具欄、菜單條和快捷鍵等等。項(xiàng)目(project)是一些相互關(guān)聯(lián)的源文件的集合,這些源文件被編譯、鏈接后,組合在一起就形成可執(zhí)行的windows應(yīng)用程序。項(xiàng)目工作區(qū)則代表了特定的項(xiàng)目的集合,每個工作區(qū)可以包含一個或多個項(xiàng)目。通過project菜單中的i
18、nsert project into workspasce選項(xiàng),用戶可以將不同的項(xiàng)目加入到同一個項(xiàng)目工作區(qū)中。當(dāng)用戶需要同時(shí)調(diào)試多個項(xiàng)目時(shí),將多個項(xiàng)目放入一個項(xiàng)目工作區(qū)可以極大地減少工作難度。每個項(xiàng)目都是由一個項(xiàng)目文件(.dsp)和一組源文件組成。項(xiàng)目工作區(qū)文件負(fù)責(zé)組織源文件,保存項(xiàng)目描述內(nèi)容和設(shè)置信息。用戶利用項(xiàng)目工作區(qū)窗口可以很方便地組織文件、管理項(xiàng)目和更改項(xiàng)目設(shè)置。在項(xiàng)目工作區(qū)地底端,有三個制表符,分別是classview、resourceview和fileview。這三個制表符分別對應(yīng)著classview、resourceview和fileview面板。通過單擊這些制表符,用戶可以得到
19、項(xiàng)目工作區(qū)中所有項(xiàng)目的以不同形式組織的視圖。充分利用項(xiàng)目工作區(qū),可以大大地提高編程人員地編程效率。visual c6.0開發(fā)平臺提供了一個集成地源代碼編輯器來管理、編輯和打印源文件。與早期地編輯器不同,源代碼編輯器能夠處理地資源范圍已經(jīng)不僅僅局限于各種文本文件,它還能夠?qū)Ω鞣N資源進(jìn)行處理,包括對話框資源、菜單資源、加速鍵資源、版本資源、圖形資源等。源代碼編輯器根據(jù)用戶輸入的內(nèi)容,自動識別資源類型,調(diào)用相應(yīng)的編輯器進(jìn)行處理。visual c6.0編程包括可視化編程和代碼編程兩個部分。在可視化編程部分,visual c6.0提供了強(qiáng)大的軟件開發(fā)工具wizard。用戶根據(jù)需要利用wizard提供的交
20、互式圖形界面,建立應(yīng)用程序的框架結(jié)構(gòu)。而在代碼編程方面,利用visual studio 6.0提供的源代碼編輯器,在已建立的程序框架基礎(chǔ)上添加源代碼,以實(shí)現(xiàn)應(yīng)用程序的具體功能。 在visual c6.0提供的為數(shù)眾多的向?qū)е?,mfc appwizard和classwizard是最常用的兩個向?qū)?。mfc類庫是microsoft公司用c語言開發(fā)的一套基礎(chǔ)類庫,是visual c的重要組成部分。mfc appwizard采用交互式界面,一步一步地引導(dǎo)用戶建立基于mfc類庫地windows應(yīng)用程序地基本框架,包括完整地源文件和資源文件。用戶無需編寫一行程序就可以建立一個標(biāo)準(zhǔn)windows風(fēng)格地應(yīng)用程序
21、。mfc appwizard有兩種版本:一種幫助用戶建立一個可執(zhí)行地文件;另一種幫助用戶建立一個動態(tài)鏈接庫文件。classwizard就好像是編程人員地助手。以往當(dāng)用戶定義了一個類、編寫消息處理函數(shù)時(shí),都必須編寫大量的代碼。有了classwizard,事情就變得簡單了。目前,只有基于mfc類庫地應(yīng)用程序才能使用classwizard。由于windows程序是一種基于事件驅(qū)動的編程模式,因此,用戶的應(yīng)用程序所做的工作必須隨著windows消息的變化來進(jìn)行。通過使用classwizard對話框中的消息映射項(xiàng),用戶可以將消息映射成各種程序所能接受、處理的信息。因此在編寫應(yīng)用程序時(shí),classwiza
22、rd能給用戶工作帶來極大的方便。2.2 注冊表技術(shù)提到注冊表,各位軟件開發(fā)人員或多或少都有所了解,因?yàn)樵诤枚嗟能浖校赡苄枰婕暗竭@方面的編程,如系統(tǒng)啟動自動加載程序運(yùn)行,修改相關(guān)的設(shè)置,提高服務(wù)器的抗拒絕服務(wù)攻擊能力等,所以說,對注冊表的編程操作是我們各位軟件進(jìn)開發(fā)行人員必須了解的知識,我們沒有理由不深入了解它。windows系列操作系統(tǒng)的注冊數(shù)據(jù)庫(registry)是系統(tǒng)中非常重要的組成部分,在win32 api中有一組注冊表操作函數(shù)來處理這些問題,其一般的讀寫過程如下: 1、使用regopenkeyex或regcre
23、atekeyex函數(shù)打開或創(chuàng)建一個鍵; 2、如果上一步成功,使用regqueryvalueex讀取子鍵的值,使用regsetvalueex設(shè)置子鍵值,使用regenumkey獲得所有子鍵,使用regdeletekey刪除一個鍵; 3、完成操作后使用regclosekey關(guān)閉鍵。 2.3 動態(tài)庫(dll)技術(shù)自從微軟推出16位的windows操作系統(tǒng)起,此后每種版本的windows操作系統(tǒng)都非常依賴于動態(tài)鏈接庫(dll)中的函數(shù)和數(shù)據(jù),實(shí)際上windows操作系統(tǒng)中幾乎所有的內(nèi)容都
24、由dll以一種或另外一種形式代表著,例如顯示的字體和圖標(biāo)存儲在gdi dll中、顯示windows桌面和處理用戶的輸入所需要的代碼被存儲在一個user dll中、windows編程所需要的大量的api函數(shù)也被包含在kernel dll中。dll是建立在客戶/服務(wù)器通信的概念上,包含若干函數(shù)、類或資源的庫文件,函數(shù)和數(shù)據(jù)被存儲在一個dll(服務(wù)器)上并由一個或多個客戶導(dǎo)出而使用,這些客戶可以是應(yīng)用程序或者是其它的dll。使用動態(tài)鏈接庫的優(yōu)點(diǎn): 最主要的一點(diǎn)是多個應(yīng)用程序、甚至是不同語言編寫的應(yīng)用程序可以共享一個dll文件,真正實(shí)現(xiàn)了資源"
25、共享",大大縮小了應(yīng)用程序的執(zhí)行代碼,更加有效的利用了內(nèi)存; 使用dll的另一個優(yōu)點(diǎn)是dll文件作為一個單獨(dú)的程序模塊,封裝性、獨(dú)立性好,在軟件需要升級的時(shí)候開發(fā)人員只需要修改相應(yīng)的dll文件就可以了,而且,當(dāng)dll中的函數(shù)改變后,只要不是參數(shù)的改變,程序代碼并不需要重新編譯。這在編程時(shí)十分有用,大大提高了軟件開發(fā)和維護(hù)的效率。靜態(tài)庫:函數(shù)和數(shù)據(jù)被編譯進(jìn)一個二進(jìn)制文件(通常擴(kuò)展名為lib),在使用靜態(tài)庫的情況下,在編譯鏈接可執(zhí)行文件時(shí),鏈接器從庫中復(fù)制這些函數(shù)和數(shù)據(jù)并把他們和應(yīng)用程序的其他模塊組合起來創(chuàng)建最終的可執(zhí)行文件(exe文件)。
26、這個過程稱為"靜態(tài)鏈接",此時(shí)因?yàn)閼?yīng)用程序所需的全部內(nèi)容都是從庫中復(fù)制了出來,所以靜態(tài)庫本身并不需要與可執(zhí)行文件一起發(fā)行。動態(tài)庫:在使用動態(tài)庫的時(shí)候,往往提供兩個文件,一個引入庫和一個dll,引入庫包含被dll導(dǎo)出的函數(shù)和變量的符號名,dll包含實(shí)際的函數(shù)和數(shù)據(jù),在編譯鏈接可執(zhí)行文件時(shí),只需要鏈接引入庫,dll中的函數(shù)代碼和數(shù)據(jù)并不復(fù)制到可執(zhí)行文件中,在運(yùn)行的時(shí)候再去加載dll,訪問dll中導(dǎo)出的函數(shù)動態(tài)鏈接庫加載的2種方式1.隱式鏈接:隱式鏈接就是在程序開始執(zhí)行時(shí)就將dll文件加載到應(yīng)用程序當(dāng)中。實(shí)現(xiàn)隱式鏈接很容易,只要將導(dǎo)入函數(shù)關(guān)鍵字_declspec(dllimpor
27、t)函數(shù)名等寫到應(yīng)用程序相應(yīng)的頭文件中就可以了。注意:要先將dll.dll和dll.lib拷貝到當(dāng)前工程所在的目錄下面,2.顯式鏈接:顯式鏈接是應(yīng)用程序在執(zhí)行過程中隨時(shí)可以加載dll文件,也可以隨時(shí)卸載dll文件,這是隱式鏈接所無法作到的,所以顯式鏈接具有更好的靈活性,對于解釋性語言更為合適。首先要將dll文件拷貝到工程所在的目錄或windows系統(tǒng)目錄下。使用顯式鏈接應(yīng)用程序編譯時(shí)不需要使用相應(yīng)的lib文件。主要是三個函數(shù)的調(diào)用loadlibrary/加載動態(tài)鏈接庫文件;getprocaddress/獲取導(dǎo)入到應(yīng)用程序中的函數(shù)指針freelibrary(hdll)/卸載動態(tài)鏈接庫文件2.4.
28、 鉤子(hook)技術(shù)鉤子程序是在內(nèi)存中可以不斷的在內(nèi)存中攔截你要控制設(shè)備的消息并且可以對該消息進(jìn)行處理過濾。鉤子是windows留給我們的后門,比如你想控制鍵盤,在dos時(shí)代很簡單通過int即可,而windows時(shí)代不允許我們直接操作硬件;由于windows是消息驅(qū)動,所以我們可以攔截鍵盤消息以達(dá)到控制鍵盤的目的。但是控制自己進(jìn)程的消息固然很簡單,要控制所有進(jìn)程消息要利用鉤子了。將鉤子函數(shù)放在dll中,所有的有關(guān)鍵盤的消息都必須經(jīng)過鉤子函數(shù)過濾,這樣你就可以為所欲為了。 windows下的鉤子程序就像dos下的tsr(內(nèi)存駐留程序)一樣,用來截獲windows下的 特定的消息,進(jìn)行相應(yīng)的處理
29、。比如可以截獲鍵盤輸入的消息,來獲得鍵盤輸入的信息等。鉤子程序可以通過api調(diào)用來駐留和脫鉤。鉤子的類型一 按事件分類,有如下的幾種常用類型(1) 鍵盤鉤子和低級鍵盤鉤子可以監(jiān)視各種鍵盤消息。(2) 鼠標(biāo)鉤子和低級鼠標(biāo)鉤子可以監(jiān)視各種鼠標(biāo)消息。(3) 外殼鉤子可以監(jiān)視各種shell事件消息。比如啟動和關(guān)閉應(yīng)用程序。(4) 日志鉤子可以記錄從系統(tǒng)消息隊(duì)列中取出的各種事件消息。(5) 窗口過程鉤子監(jiān)視所有從系統(tǒng)消息隊(duì)列發(fā)往目標(biāo)窗口的消息。此外,還有一些特定事件的鉤子提供給我們使用,不一一列舉。下面描述常用的hook類型:1、wh_callwndproc和wh_callwndprocret hook
30、s wh_callwndproc和wh_callwndprocret hooks使你可以監(jiān)視發(fā)送到窗口過程的消息。系統(tǒng)在消息發(fā)送到接收窗口過程之前調(diào)用wh_callwndproc hook子程,并且在窗口過程處理完消息之后調(diào)用wh_callwndprocret hook子程。 wh_callwndprocret hook傳遞指針到cwpretstruct結(jié)構(gòu),再傳遞到hook子程。cwpretstruct結(jié)構(gòu)包含了來自處理消息的窗口過程的返回值,同樣也包括了與這個消息關(guān)聯(lián)的消息參數(shù)。2、wh_cbt hook 在以下事件之前,系統(tǒng)都會調(diào)用wh_cbt hook子程,這些事件包括: 1. 激活,
31、建立,銷毀,最小化,最大化,移動,改變尺寸等窗口事件; 2. 完成系統(tǒng)指令; 3. 來自系統(tǒng)消息隊(duì)列中的移動鼠標(biāo),鍵盤事件; 4. 設(shè)置輸入焦點(diǎn)事件; 5. 同步系統(tǒng)消息隊(duì)列事件。hook子程的返回值確定系統(tǒng)是否允許或者防止這些操作中的一個。3、wh_debug hook 在系統(tǒng)調(diào)用系統(tǒng)中與其他hook關(guān)聯(lián)的hook子程之前,系統(tǒng)會調(diào)用wh_debug hook子程。你可以使用這個hook來決定是否允許系統(tǒng)調(diào)用與其他hook關(guān)聯(lián)的hook子程。4、wh_foregroundidle hook 當(dāng)應(yīng)用程序的前臺線程處于空閑狀態(tài)時(shí),可以使用wh_foregroundidle hook執(zhí)行低優(yōu)先級的
32、任務(wù)。當(dāng)應(yīng)用程序的前臺線程大概要變成空閑狀態(tài)時(shí),系統(tǒng)就會調(diào)用wh_foregroundidle hook子程。5、wh_getmessage hook 應(yīng)用程序使用wh_getmessage hook來監(jiān)視從getmessage or peekmessage函數(shù)返回的消息。你可以使用wh_getmessage hook去監(jiān)視鼠標(biāo)和鍵盤輸入,以及其他發(fā)送到消息隊(duì)列中的消息。6、wh_journalplayback hook wh_journalplayback hook使應(yīng)用程序可以插入消息到系統(tǒng)消息隊(duì)列。可以使用這個hook回放通過使用wh_journalrecord hook記錄下來的連續(xù)的
33、鼠標(biāo)和鍵盤事件。只要wh_journalplayback hook已經(jīng)安裝,正常的鼠標(biāo)和鍵盤事件就是無效的。 wh_journalplayback hook是全局hook,它不能象線程特定hook一樣使用。 wh_journalplayback hook返回超時(shí)值,這個值告訴系統(tǒng)在處理來自回放hook當(dāng)前消息之前需要等待多長時(shí)間(毫秒)。這就使hook可以控制實(shí)時(shí)事件的回放。 wh_journalplayback是system-wide local hooks,它們不會被注射到任何行程位址空間。(估計(jì)按鍵精靈是用這個hook做的)7、wh_journalrecord hook wh_journ
34、alrecord hook用來監(jiān)視和記錄輸入事件。典型的,可以使用這個hook記錄連續(xù)的鼠標(biāo)和鍵盤事件,然后通過使用wh_journalplayback hook來回放。 wh_journalrecord hook是全局hook,它不能象線程特定hook一樣使用。 wh_journalrecord是system-wide local hooks,它們不會被注射到任何行程位址空間。8、wh_keyboard hook 在應(yīng)用程序中,wh_keyboard hook用來監(jiān)視wm_keydown and wm_keyup消息,這些消息通過getmessage or peekmessage funct
35、ion返回。可以使用這個hook來監(jiān)視輸入到消息隊(duì)列中的鍵盤消息。9、wh_keyboard_ll hook wh_keyboard_ll hook監(jiān)視輸入到線程消息隊(duì)列中的鍵盤消息。10、wh_mouse hook wh_mouse hook監(jiān)視從getmessage 或者 peekmessage 函數(shù)返回的鼠標(biāo)消息。使用這個hook監(jiān)視輸入到消息隊(duì)列中的鼠標(biāo)消息。11、wh_mouse_ll hook wh_mouse_ll hook監(jiān)視輸入到線程消息隊(duì)列中的鼠標(biāo)消息。12、wh_msgfilter 和 wh_sysmsgfilter hooks wh_msgfilter 和 wh_sys
36、msgfilter hooks使我們可以監(jiān)視菜單,滾動條,消息框,對話框消息并且發(fā)現(xiàn)用戶使用alt+tab or alt+esc 組合鍵切換窗口。 wh_msgfilter hook只能監(jiān)視傳遞到菜單,滾動條,消息框的消息,以及傳遞到通過安裝了hook子程的應(yīng)用程序建立的對話框的消息。 wh_sysmsgfilter hook監(jiān)視所有應(yīng)用程序消息。 wh_msgfilter 和 wh_sysmsgfilter hooks使我們可以在模式循環(huán)期間過濾消息,這等價(jià)于在主消息循環(huán)中過濾消息。通過調(diào)用callmsgfilter function可以直接的調(diào)用wh_msgfilter hook。通過使用
37、這個函數(shù),應(yīng)用程序能夠在模式循環(huán)期間使用相同的代碼去過濾消息,如同在主消息循環(huán)里一樣。13、wh_shell hook 外殼應(yīng)用程序可以使用wh_shell hook去接收重要的通知。當(dāng)外殼應(yīng)用程序是激活的并且當(dāng)頂層窗口建立或者銷毀時(shí),系統(tǒng)調(diào)用wh_shell hook子程。 wh_shell 共有鐘情況: 1. 只要有個top-level、unowned 窗口被產(chǎn)生、起作用、或是被摧毀; 2. 當(dāng)taskbar需要重畫某個按鈕; 3. 當(dāng)系統(tǒng)需要顯示關(guān)于taskbar的一個程序的最小化形式; 4. 當(dāng)目前的鍵盤布局狀態(tài)改變; 5. 當(dāng)使用者按ctrl+esc去執(zhí)行task manager(或
38、相同級別的程序)。 按照慣例,外殼應(yīng)用程序都不接收wh_shell消息。所以,在應(yīng)用程序能夠接收wh_shell消息之前,應(yīng)用程序必須調(diào)用systemparametersinfo function注冊它自己。以上是13種常用的hook類型!2 按使用范圍分類,主要有線程鉤子和系統(tǒng)鉤子(1) 線程鉤子監(jiān)視指定線程的事件消息。(2) 系統(tǒng)鉤子監(jiān)視系統(tǒng)中的所有線程的事件消息。因?yàn)橄到y(tǒng)鉤子會影響系統(tǒng)中所有的應(yīng)用程序,所以鉤子函數(shù)必須放在獨(dú)立的動態(tài)鏈接庫(dll)中。這是系統(tǒng)鉤子和線程鉤子很大的不同之處。 幾點(diǎn)需要說明的地方:(1) 如果對于同一事件(如鼠標(biāo)消息)既安裝了線程鉤子又安裝了系統(tǒng)鉤子,那么系
39、統(tǒng)會自動先調(diào)用線程鉤子,然后調(diào)用系統(tǒng)鉤子。(2) 對同一事件消息可安裝多個鉤子處理過程,這些鉤子處理過程形成了鉤子鏈。當(dāng)前鉤子處理結(jié)束后應(yīng)把鉤子信息傳遞給下一個鉤子函數(shù)。而且最近安裝的鉤子放在鏈的開始,而最早安裝的鉤子放在最后,也就是后加入的先獲得控制權(quán)。(3) 鉤子特別是系統(tǒng)鉤子會消耗消息處理時(shí)間,降低系統(tǒng)性能。只有在必要的時(shí)候才安裝鉤子,在使用完畢后要及時(shí)卸載。 編寫鉤子程序 編寫鉤子程序的步驟分為三步:定義鉤子函數(shù)、安裝鉤子和卸載鉤子。 1定義鉤子函數(shù) 鉤子函數(shù)是一種特殊的回調(diào)函數(shù)。鉤子監(jiān)視的特定事件發(fā)生后,系統(tǒng)會調(diào)用鉤子函數(shù)進(jìn)行處理。不同事件的鉤子函數(shù)的形式是各不相同的。 下面以鼠標(biāo)鉤
40、子函數(shù)舉例說明鉤子函數(shù)的原型: lresult callback hookproc(int ncode ,wparam wparam,lparam lparam) 參數(shù)wparam和 lparam包含所鉤消息的信息,比如鼠標(biāo)位置、狀態(tài),鍵盤按鍵等。ncode包含有關(guān)消息本身的信息,比如是否從消息隊(duì)列中移出。 我們先在鉤子函數(shù)中實(shí)現(xiàn)自定義的功能,然后調(diào)用函數(shù) callnexthookex.把鉤子信息傳遞給鉤子鏈的下一個鉤子函數(shù)。 callnexthookex.的原型如下: lresult callnexthookex( hhook hhk, int ncode, wparam wparam, l
41、param lparam ) 參數(shù) hhk是鉤子句柄。ncode、wparam和lparam 是鉤子函數(shù)。 當(dāng)然也可以通過直接返回true來丟棄該消息,就阻止了該消息的傳遞。 2安裝鉤子 在程序初始化的時(shí)候,調(diào)用函數(shù)setwindowshookex安裝鉤子。 其函數(shù)原型為: hhook setwindowshookex( int idhook,hookproc lpfn, instance hmod,dword dwthreadid ) 參數(shù)idhook表示鉤子類型,它是和鉤子函數(shù)類型一一對應(yīng)的。比如,wh_keyboard表示安裝的是鍵盤鉤子,wh_mouse表示是鼠標(biāo)鉤子等等。 lpfn是
42、鉤子函數(shù)的地址。 hmod是鉤子函數(shù)所在的實(shí)例的句柄。對于線程鉤子,該參數(shù)為null;對于系統(tǒng)鉤子,該參數(shù)為鉤子函數(shù)所在的dll句柄。 dwthreadid 指定鉤子所監(jiān)視的線程的線程號。對于全局鉤子,該參數(shù)為null。 setwindowshookex返回所安裝的鉤子句柄。 3卸載鉤子 當(dāng)不再使用鉤子時(shí),必須及時(shí)卸載。簡單地調(diào)用函數(shù) bool unhookwindowshookex( hhook hhk)即可。 值得注意的是線程鉤子和系統(tǒng)鉤子的鉤子函數(shù)的位置有很大的差別。線程鉤子一般在當(dāng)前線程或者當(dāng)前線程派生的線程內(nèi),而系統(tǒng)鉤子必須放在獨(dú)立的動態(tài)鏈接庫中,實(shí)現(xiàn)起來要麻煩一些。2.5 多線程技
43、術(shù)線程介紹:一個進(jìn)程通常定義為程序的一個實(shí)例。在win32中, 進(jìn)程占據(jù)4gb的地址空間。與它們在ms-dos和16位windows操作系統(tǒng)中不同, win32進(jìn)程是沒有活力的。這就是說,一個win32進(jìn)程并不執(zhí)行什么指令,它只是占據(jù)著4gb的地址空間,此空間中有應(yīng)用程序exe文件的 代碼和數(shù)據(jù)。exe需要的任意dll也將它們的代碼和數(shù)據(jù)裝入到進(jìn)程的地址空間。除了地址空間,進(jìn)程還占有某些資源,比如文件、動態(tài)內(nèi)存分配和線程。當(dāng)進(jìn)程終止時(shí),在它生命期中創(chuàng)建的各種資源將被清除。但是進(jìn)程是沒有活力的,它只是一個靜態(tài)的概念。為了讓進(jìn)程完成一些工作,進(jìn)程必須至少占有一個線程,所以線程是描述進(jìn)程內(nèi)的執(zhí)行,正
44、是線程負(fù)責(zé)執(zhí)行包含在進(jìn)程的地址空間中的代碼。實(shí)際上,單個進(jìn)程可以包含幾個線程, 它們可以同時(shí)執(zhí)行進(jìn)程的地址空間中的代碼。為了做到這一點(diǎn),每個線程有自己的一組cpu寄存器和堆棧。每個進(jìn)程至少有一個線程在執(zhí)行其地址空間中的代碼,如果沒有線程執(zhí)行進(jìn)程 地址空間中的代碼, 進(jìn)程也就沒有繼續(xù)存在的理由,系統(tǒng)將自動清除進(jìn)程及其地址空間。為了運(yùn)行所有這些線程,操作系統(tǒng)為每個獨(dú)立線程安排一些cpu 時(shí)間,操作系統(tǒng)以輪轉(zhuǎn)方式向線程提供時(shí)間片,這就給人一種假象,好象這些線程都在同時(shí)運(yùn)行。創(chuàng)建一個win32進(jìn)程時(shí),它的第一個線程稱為主線程,它 由系統(tǒng)自動生成,然后可由這個主線程生成額外的線程,這些線程,又可生成更多
45、的線程。多線程編程技術(shù)基礎(chǔ):1、編寫線程函數(shù)所有線程必須從一個指定的函 數(shù)開始執(zhí)行,該函數(shù)稱為線程函數(shù),它必須具有下列原型:dwordwinapiyourthreadfunc(lpvoidlpvthreadparm);該函數(shù)輸入一個lpvoid型的參數(shù),可以是一個dword型的整數(shù),也可以是一個指向一個緩沖區(qū)的指針, 返回一個dword型的值。象winmain函數(shù)一樣,這個函數(shù)并不由操作系統(tǒng)調(diào)用, 操作系統(tǒng)調(diào)用包含在kernel32.dll中的非c運(yùn)行時(shí)的一個內(nèi)部函數(shù),如startofthread,然后由startofthread函數(shù)建立起一個異常處理框架后,調(diào)用我們的函數(shù)。2、創(chuàng)建一個線程一
46、個進(jìn)程的主線程是由操作系統(tǒng)自動生成,如果你要讓一個主線程創(chuàng)建額外的線程,你可以調(diào)用來createthread完成。handlecreatethread(lpsecurity_attributes lpsa,dwordcbstack,lpthread_start_routinelpstartaddr,lpvoid lpvthreadparm,dwordfdwcreate,lpdwordlpidthread);其中l(wèi)psa參數(shù)為一個指向security_attributes結(jié)構(gòu)的指針。如果想讓對象為缺省安全屬性的話,可以傳一個null,如果想讓任一個子進(jìn)程都可繼承一個該線程對象句柄,必須指定一個s
47、ecurity_attributes結(jié)構(gòu),其中binherithandle成員初始化為true。參數(shù)cbstack表示線程為自己所用堆棧分配的地址空間大小,0表示采用系統(tǒng)缺省值。參數(shù)lpstartaddr用來表示新線程開始執(zhí)行時(shí)代碼所在函數(shù)的地址,即為線程函數(shù)。lpvthreadparm為傳入線程函數(shù)的參數(shù),fdwcreate參數(shù)指定控制線程創(chuàng)建的附加標(biāo)志,可以取兩種值。如果該參數(shù)為0,線程就會立即開始執(zhí)行,如果該參數(shù)為create_suspended,則系統(tǒng)產(chǎn)生線程后,初始化cpu,登記context結(jié)構(gòu)的成員,準(zhǔn)備好執(zhí)行該線程函數(shù)中的第一條指令,但并不馬上執(zhí)行,而是掛起該線程。最后一個參數(shù)
48、lpidthread 是一個dword類型地址,返回賦給該新線程的id值。3、終止線程如果某線程調(diào)用了exitthread 函數(shù),就可以終止自己。voidexitthread(uintfuexitcode );這個函數(shù)為調(diào)用該函數(shù)的線程設(shè)置了退出碼fuexitcode后, 就終止該線程。調(diào)用terminatethread函數(shù)亦可終止線程。boolterminatethread(handle hthread,dworddwexitcode);該函數(shù)用來結(jié)束由hthread參數(shù)指定的線程, 并把dwexitcode設(shè)成該線程的退出碼。當(dāng)某個線程不在響應(yīng)時(shí),我們可以用其他線程調(diào)用該函數(shù)來終止這個不響
49、應(yīng)的線程。3 家庭電腦監(jiān)控系統(tǒng)的總體設(shè)計(jì)在對整個開發(fā)系統(tǒng)進(jìn)行全面分析調(diào)查的基礎(chǔ)上,制定出應(yīng)用軟件的總體設(shè)計(jì),這對建立一個應(yīng)用軟件說是必須的,也是全面展開開發(fā)工作的重要基礎(chǔ)。系統(tǒng)總體設(shè)計(jì)包括:需求分析、模塊總體設(shè)計(jì)等。3.1 需求分析隨著計(jì)算機(jī)的應(yīng)用普及,千千萬萬的家庭在娛樂,通訊,學(xué)習(xí),工作等各方面實(shí)現(xiàn)了前所未有的信息化,極大地提高了生活質(zhì)量。 然而,在計(jì)算機(jī)給人們帶來諸多方便的同時(shí),您是否感受到它也給您的家庭帶來了許多“不安全”的負(fù)面因素?當(dāng)您離家在外的時(shí)候,您是否擔(dān)心孩子過多時(shí)間玩電腦游戲而耽誤了學(xué)習(xí)?互聯(lián)網(wǎng)內(nèi)容繁雜,您是否擔(dān)心孩子上網(wǎng)瀏覽到不健康內(nèi)容的網(wǎng)頁? 您是否擔(dān)心您的丈夫(妻子)在
50、家中使用qq,msn聊天時(shí)而不小心墮入“外遇”的陷井?您是否希望當(dāng)您不在家時(shí),您的電腦的使用情況盡在掌握之中?通過跟很多家長的交流與溝通得出來的結(jié)論是很有必要開發(fā)一個系統(tǒng)對電腦進(jìn)行監(jiān)控。 通過跟很多家長的交流與溝通開發(fā)的系統(tǒng)應(yīng)該實(shí)行如下功能:1. 監(jiān)視信息-文件使用記錄 2. 監(jiān)視信息-屏幕圖象記錄3. 監(jiān)視信息-訪問網(wǎng)頁記錄4. 監(jiān)視信息-qq聊天記錄5. 監(jiān)視信息-msn聊天記錄6. 控制設(shè)置-網(wǎng)站屏蔽7. 控制設(shè)置-隱藏家庭電腦監(jiān)控系統(tǒng)的運(yùn)行進(jìn)程跟窗口8. 控制設(shè)置-運(yùn)行時(shí)間控制9. 系統(tǒng)參數(shù)設(shè)置10. 其他3.2 模塊總體設(shè)計(jì)對于開發(fā)網(wǎng)站來說,前期的總體設(shè)計(jì)規(guī)劃是必要的,也是必須的,因
51、為它將影響到整個系統(tǒng)的好壞和設(shè)計(jì)實(shí)現(xiàn)的進(jìn)度,所以,在開發(fā)一個系統(tǒng)時(shí),必須先對其進(jìn)行總體的設(shè)計(jì)規(guī)劃,而使之后的工作能朝著預(yù)定的方向發(fā)展。通過上面對網(wǎng)站的整體需求分析,我們可以規(guī)劃一個簡單的家庭電腦監(jiān)控的總體設(shè)計(jì)方向。圖3.1展示了家庭電腦監(jiān)控的總體規(guī)劃圖。家庭電腦監(jiān)控系統(tǒng)msn聊天記錄飛信聊天記錄訪問網(wǎng)頁記錄網(wǎng)址屏蔽運(yùn)行時(shí)間控制幕圖象像記錄行時(shí)隱藏監(jiān)控程序開機(jī)自動運(yùn)行qq聊天記錄圖3.1 總體規(guī)劃圖各個模塊的說明如下。1、上網(wǎng)監(jiān)控:能記錄孩子所上的網(wǎng)站,及內(nèi)容。并具有網(wǎng)頁過濾功能,可禁止孩子上特定的網(wǎng)站,如游戲網(wǎng)站,色情網(wǎng)站等等2、文件監(jiān)控:本軟件運(yùn)行時(shí),對電腦中的文件作了任何操作,例如新建,刪
52、除,打開,修改等操作,本軟件都能一一記錄并且保存下來,保存的記錄已日期分類,方便您查詢.3、禁止程序運(yùn)行:可自行設(shè)定禁用孩子計(jì)算機(jī)的指定的程序,如、游戲等等4 聊天內(nèi)容監(jiān)視:可監(jiān)視包括qq、msn、飛信等聊天工具的聊天內(nèi)容,不管使用者是否選擇保存聊天記錄都可以記錄聊天內(nèi)容,可以了解孩子跟什么人聯(lián)系,了解孩子的心理狀態(tài)5 屏幕記錄:本軟件運(yùn)行您可以配置截屏策略,讓您看到所有您想看到的電腦使用當(dāng)時(shí)的畫面6 電腦使用時(shí)間設(shè)置:可以設(shè)置孩子可以用電腦的時(shí)間如果不在設(shè)定的時(shí)間內(nèi)電腦自動關(guān)機(jī)。7 隱藏監(jiān)控系統(tǒng):家庭電腦監(jiān)控運(yùn)行時(shí)隱藏起來不要讓使用者知道,在任務(wù)管理器的進(jìn)程里也看不到,使用者根本不知道這個軟
53、件在運(yùn)行,只有擁有者可以通過密碼喚出軟件。4 家庭電腦監(jiān)控的詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)的工作包括處理過程、代碼設(shè)計(jì)和界面設(shè)計(jì)三個部分。即根據(jù)總體設(shè)計(jì)的每個功能模塊的要求,利用相應(yīng)的開發(fā)工具設(shè)計(jì)出應(yīng)用系統(tǒng)的過程。這個系統(tǒng)是兩個人共同完成的在這里只給出系統(tǒng)的主框架跟我自己負(fù)責(zé)的那部分的模塊的功能設(shè)計(jì)描述、界面設(shè)計(jì),和核心代碼。4.1 主界面的設(shè)計(jì)與實(shí)現(xiàn)這個系統(tǒng)主要是針對電腦普通用戶的所以界面不能夠太復(fù)雜,越簡單越好,我們通過cgfxpopupmenu、cgfxoutbarctrl、cgfxgroupedit三個類實(shí)現(xiàn)了類似qq那樣滾動分欄的界面,我想用電腦的人基本都對qq很熟悉的用起我們的系統(tǒng)來也肯定很容易
54、。系統(tǒng)的主界面截圖: 這個是系統(tǒng)運(yùn)行時(shí)候出現(xiàn)的主窗口,在這個窗口中點(diǎn)擊左邊的按鈕就可以顯示相應(yīng)的監(jiān)控到的記錄。點(diǎn)擊列表框中的信息會在下面顯示點(diǎn)擊的那天記錄的詳細(xì)信息。這個窗口可以對控制進(jìn)行一些靈活的控制如:時(shí)間段的設(shè)置網(wǎng)址屏蔽設(shè)置等等點(diǎn)擊左邊的按鈕右便會出現(xiàn)相應(yīng)的窗口。這個窗口可以對系統(tǒng)對系統(tǒng)進(jìn)行設(shè)置數(shù)據(jù)的清理退出系統(tǒng)等等下面是實(shí)現(xiàn)界面的主要代碼:void csysminitordlg:initbar()/創(chuàng)建抽屜菜單控件dword dwf = cgfxoutbarctrl:fdragitems|cgfxoutbarctrl:feditgroups|cgfxoutbarctrl:feditit
55、ems| cgfxoutbarctrl:fremovegroups|cgfxoutbarctrl:fremoveitems | cgfxoutbarctrl:faddgroups|cgfxoutbarctrl:fanimation| cgfxoutbarctrl:fselhighlight;crect rc;getclientrect(&rc);rc.right=rc.left+150;wndbar.create(ws_child|ws_visible, rc, this,idc_lst_menu, dwf);wndbar.setowner(this);/創(chuàng)建并設(shè)置大小圖標(biāo)鏈表csys
56、minitorapp* papp=(csysminitorapp*)afxgetapp();imalarge.create(32,32,true,14,14);imalarge.add(papp->loadicon(idi_icon_qq);imalarge.add(papp->loadicon(idi_icon_msn);imalarge.add(papp->loadicon(idi_icon_fetion);imalarge.add(papp->loadicon(idi_icon_file);imalarge.add(papp->loadicon(idi_icon_web);imalarge.add(papp->loadicon(idi_icon_webset);imalarge.add(papp->loadicon(idi_icon_fileset);imalarge.add(papp->loadicon(idi_icon_filesafe);imalarge.add(papp->loadic
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2021年動力鋰電行業(yè)億緯鋰能分析報(bào)告
- 微型真空泵相關(guān)行業(yè)投資方案
- 放射性核素遙控后裝機(jī)行業(yè)相關(guān)投資計(jì)劃提議范本
- 鼓勵學(xué)生自主學(xué)習(xí)的班級策略計(jì)劃
- 腦卒中并發(fā)吞咽障礙個案護(hù)理
- IPD(漢捷培訓(xùn))資料課件
- 《認(rèn)清形勢》課件
- 《政府規(guī)制政策》課件
- 生鮮行業(yè)的報(bào)告范文
- 《政府政策與經(jīng)濟(jì)學(xué)》課件
- 《歌劇魅影》音樂賞析
- 六年級百分?jǐn)?shù)乘法計(jì)算專題練習(xí)題100道(家長老師必備-直接打印使用)
- 2023年浙江省高考1月化學(xué)真題試卷及答案
- 企業(yè)開放日活動方案
- 五力分析微軟office
- 山東省濟(jì)南市2022-2023學(xué)年高二上學(xué)期期末數(shù)學(xué)試題(學(xué)生版+解析)
- 急診科護(hù)士長年終工作總結(jié)
- 2024年全國養(yǎng)老護(hù)理職業(yè)技能大賽選拔賽參考試題庫(含答案)
- 鑄牢中華民族共同體意識建設(shè)中華民族共同體
- 醫(yī)學(xué)檢驗(yàn)、醫(yī)學(xué)影像檢查結(jié)果互認(rèn)制度測試題
- 跌倒墜床原因分析課件
評論
0/150
提交評論