已閱讀5頁,還剩69頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 本文配套程序下載地址 : 無憂無慮畢設網(wǎng) ()-大學生畢業(yè)設計站 ,免費畢業(yè)設計論文 ,無憂無慮畢設網(wǎng) 大學生畢業(yè)設計 ,出售各類畢業(yè)設計源碼 ,論文 ,程序源碼 ,網(wǎng)站源碼 ,免費視頻教程 ,我們將竭誠為您服務! 摘 要 進入信息時代,隨著互聯(lián)網(wǎng)普及,只要接上網(wǎng)絡,就能從網(wǎng)上找到龐大的數(shù)據(jù)資源,其內(nèi)容包羅萬象,可以說幾乎任何人都可以在Internet 資源中找到自己所需要的信息資源。 有了網(wǎng)絡,使用者不但可以瀏覽各種各樣的信息資源,還能夠?qū)⒆约焊信d趣的資源下載到本地機上。由于網(wǎng)絡的帶寬及各種服務的限 制,單純從頁面上下載顯得又慢又不可靠,所以就有許多 FTP工具提供出來。 本軟件是用 DELPHI7.0 作為開發(fā)工具完成的,系統(tǒng)有著良好的界面,簡單易用,系統(tǒng)開發(fā)的總體任務是連接 FTP 服務器,上傳 /下載文件、對 FTP 服務器站點的管理、服務器端提供 FTP 服務、允許遠程登錄下載服務器上的文件。 本軟件的設計,即從需求分析,軟件設計到軟件功能實現(xiàn),都始終遵循軟件工程的思想和數(shù)據(jù)庫的設計方法。在本文中采用了大量的圖表說明,使文章明確清晰,便與閱讀和理解。 關鍵詞: FTP , FTP 工具軟件, DELPHI 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: Abstract Enter the information centuries, along with the Internet universal, so long as connect with the net, you can find out the huge data resources from the Internet, its contents all inclusive, can say almost anyone can find out the information resources which you need in the Internet. Had the network, the user can browse various of information resources, can still download resources which you are interested in native from aboard. Because of the bandwidth of the network and the restrict of various service, the simplicity way seem to be slowly and not dependable up and down from the page, so there have many tools of FTP to provide out. This software completes with the DELPHI7.0 tools, the system has the good interface, using in brief and easily, the total mission of the system is to link the server of FTP, spreading up/ download documents, to the FTP server the management, server that station order carries to provide the service of FTP and allow the document of the long range logging download service machine. The design of this software, namely analytical from the need, the software designs the function to carry out, all following the thought of the software engineering and the design method of the databases always. This text had a great deal of chart elucidation, make the article definitely clear, then with read and comprehend easily. Key words FTP Tools of FTP software DELPHI 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 目 錄 摘 要 . I Abstract . II 第 1 章 緒 論 . 1 1.1 課題背景 . 1 1.2 網(wǎng)絡基本概念 . 1 1.3 網(wǎng)絡概述 . 2 第 2 章 Delphi6 及相關技術簡介 . 3 2.1 Delphi6 簡介 . 3 2.2 FTP 協(xié)議簡介 . 3 2.2.1 什么是 FTP 協(xié)議? . 3 2.2.2 FTP 文件傳輸?shù)闹饕攸c . 4 2.2.3 FTP 支持的文件傳送類型 . 4 2.2.4 FTP 在實現(xiàn)網(wǎng)絡傳輸時提供的 3 種模式 . 4 2.3 FTP 在 Delphi6 的中的實現(xiàn) . 5 2.4 NMFTP 控件的介紹 . 5 2.4.1 常用屬性介紹 . 5 2.4.2 常用方法介紹 . 7 2.4.3 常用事件介紹 . 9 2.5 客戶機 /服務器模式 . 11 2.5.1 什么是客戶機 /服務器 . 11 2.5.2 如何采用客戶機 /服務器模式 . 11 2.6 第三方控件的安裝與刪除 . 12 2.6.1 控件的安裝 . 13 2.6.2 控件的刪除 . 13 第 3 章 系統(tǒng)功能分析及界面設計 . 14 3.1 系統(tǒng)功能分析 . 14 3.2 系統(tǒng)主界面設計 . 16 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 3.3 站點管理器窗體設計 . 17 3.4 閃現(xiàn)窗體的設計 . 18 第 4 章 系統(tǒng)主要功能實現(xiàn) . 19 4.1 閃現(xiàn)窗口的實現(xiàn)要點 . 19 4.2 主窗體中各模塊的實現(xiàn) . 20 4.2.1 本地操作的實現(xiàn)要點 . 20 4.2.2 站點管理器的實現(xiàn)要點 . 24 4.2.3 FTP 服務器上的遠程操作實現(xiàn)要點 . 27 第 5 章 FTP 服務器端設計與應用 . 29 5.1 常用的 FTP 端指令集 . 29 5.2 重要的有關 FTP 的第三方控件包的介紹 . 29 5.2.1 常用屬性介紹 . 30 5.2.2 常用方法介紹 . 31 5.2.3 常用事件介紹 . 31 5.3 FTP 服務器的設計 . 32 5.3.1 FTP 服務器界 面設計 . 32 5.3.2 FTP 服務器功能的實現(xiàn) . 34 5.4 FTP 服務器端應用擴展分析 . 35 5.4.1 注冊自動運行的幾種方法 . 36 5.4.2 防止程序多次重復運行 . 38 5.4.3 任務管理器中的隱形 . 39 5.4.4 可執(zhí)行文件的藏匿 . 41 結 論 . 43 致 謝 . 44 參 考 文 獻 . 45 附錄 1 . 47 附錄 2 . 50 附錄 3 . 54 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 第 1 章 緒 論 1.1 課題背景 現(xiàn)代科技給我們帶來了翻天覆地的變化,互聯(lián)網(wǎng)就是這諸多變化之一,而且它無時不刻地包圍著你??梢赃@樣說 , 21 世紀是互聯(lián)網(wǎng)的世紀?;ヂ?lián)網(wǎng)是人類科技發(fā)展史中成長最快的新鮮事物,從誕生到高度發(fā)展僅僅用了二十幾年,而未來的發(fā)展前景更是一片光明。每個人可能者已經(jīng)感覺到了它的發(fā)展,從大大小小的網(wǎng)絡公司到各種各樣的網(wǎng)上商店、書店、網(wǎng)吧、網(wǎng)上銀行等,就連電影院也都搬到了網(wǎng)上你可以足不出戶的欣賞美國大片。 早在 20 世紀 90 年代初, Internet 和 World Wide Web(簡稱 WWW)已經(jīng)被大家熟知。最近幾年, Internet 的發(fā)展更是神速,它已經(jīng)深深 觸 及 到 我 們 的 生 活 和 工 作 的 方 方 面 面 。 隨 著 許 多 新 興 技 術 在Internet 中 的推廣應用,使用它的自身發(fā)展更日趨完善,它為用戶也帶來了越來多的實惠和便利。毫不夸張地說,無論你在世界上的哪個角落,只要通過互聯(lián)網(wǎng),你就可以同親人朋友、甚至是陌生人相互交流,而且形式多樣?;グl(fā)郵件、交換文件、彼此聊天這已經(jīng)是很平常了,而現(xiàn)在隨著網(wǎng)絡、通信技術的相結合,已經(jīng)出現(xiàn)了可視電話、網(wǎng)絡家電、電子商務等。網(wǎng)絡用戶可以通過大大小小的各類網(wǎng)站或主頁。他們已經(jīng)越來越離不開網(wǎng)絡,而且已經(jīng)把企業(yè)網(wǎng)絡建設納入了未來企業(yè)發(fā)展最重要的環(huán)節(jié)。是互聯(lián)網(wǎng)最大的凝聚力所在,它是一個包羅萬象的信息服務系統(tǒng)。 1.2 網(wǎng)絡基本概 念 互聯(lián)網(wǎng)通常指的是由很多計算機網(wǎng)絡(包括局域網(wǎng)、廣域網(wǎng)等)相互連接而成的一個總網(wǎng)絡,它無論在功能上還是在邏輯上都是一無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 個巨型網(wǎng)絡。無論 Internet、因特網(wǎng)、國際互聯(lián)網(wǎng)、互聯(lián)網(wǎng)、全球互聯(lián)網(wǎng)、交互網(wǎng)、國際電腦網(wǎng)絡、國際計算機網(wǎng)絡。其實它們都是由美國阿帕網(wǎng)( ARPANET)發(fā)展而成的。主要采用的通信協(xié)議都是TCP/IP 協(xié)議。 Internet 也就是網(wǎng)絡中心的網(wǎng)絡。那什么又是網(wǎng)絡呢?網(wǎng)絡與Internet 又有什么關系呢? 1.3 網(wǎng)絡概述 網(wǎng)絡的定義從概念上說,就是由兩臺或兩臺以上計算機通過一定的連接和統(tǒng)一的 通信協(xié)議,最終實現(xiàn)彼此之間相互通信的實體。網(wǎng)絡互聯(lián)可以采用網(wǎng)間連接器互連和通過互聯(lián)網(wǎng)兩種方式實現(xiàn)網(wǎng)絡互聯(lián)。從定義看,它必須是由多個電腦通過連接設備物理連接而成,然后通過定制的協(xié)議方法才能實現(xiàn)多種資源、服務、信息共享。這種通信包括了發(fā)送 E-mail 和傳真,交換一個或多個文件等。而Internet 是多個計算機網(wǎng)絡的集合,是一個網(wǎng)中網(wǎng),是遍布全球的聯(lián)絡各個計算機平臺的總連接,這些網(wǎng)中網(wǎng)的計算機少則兩三臺,多的則擁有數(shù)千臺,是名副其實的千萬信息資源的匯合。從本質(zhì)上講, Internet 是一個媒介,是一個溝通你我他,溝 通全世界的重要手段,只不過這種溝通連接世界上不同種類型的計算機實現(xiàn)的,通過這種連接,我們就能和世界交流,和世界通信,所以它又是一個交換各類數(shù)據(jù)的通信媒介。從 Internet 提供的無限資源和對人類的發(fā)展推動作用這方面來理解, Internet 是正在迅猛發(fā)展的全球數(shù)字化數(shù)據(jù)庫,這個數(shù)據(jù)庫是建立在高度靈活的通信技術之上的,正是有了各種成熟的通信技術和網(wǎng)絡連接的簡單性、靈活性和共享信息的便利性才促成了 Internet 的飛速發(fā)展。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 第 2 章 Delphi6 及相關技術簡介 2.1 Delphi6 簡介 Delphi 是美國 Borland 公司推出的功能強大的應用程序開發(fā)工具。它具有功能強大、運行速度快、易于學習和使用以及開發(fā)效率高等特點。它是可視化應用編程開發(fā)環(huán)境、可重用性面向?qū)ο缶幊陶Z言、快速編譯器和數(shù)據(jù)庫的完美結合。 Delphi6 發(fā)布于 2001 年 6 月。新版本的 Delphi6 開發(fā)功能更加強大,除了能夠有效幫助開發(fā)者個人或其開發(fā)團隊快速建立 Windows應用程序,快速簡化 Windows 與瀏覽器客戶、 Web 服務器、中間件以及后臺數(shù)據(jù)庫系統(tǒng) (XML|SOAPWSDLXSL 等 )的開發(fā)工具,同時也支持基于 Web 服務的 Microsoft.NET 和 Sun ONE,而且提供給 Web開發(fā)者需要的可伸縮性與可靠性。新的 Delphi6 框架中還包括了BizSnapWebSnap 和 DataSnap,用戶可以用它開發(fā)支持 Web 服務特性的服務器端和客戶端應用,而這一切者是通過一套高度集成的可視化開發(fā)工具、先進的編譯技術和可重用的組件完成的。特別是在電子 商務 愈加流行的今天,通過 Delphi 6,任何企業(yè)都能很快地轉(zhuǎn)移到未來基于 Web 服務的電子商務應用程序開發(fā)上,而不用丟棄以往的開發(fā)方式、技巧和源代碼。可見,要創(chuàng)建一流的 Web 應用程序 ,Delphi 6 無疑是目前的最佳選擇之一。 2.2 FTP 協(xié)議簡介 2.2.1 什么是 FTP 協(xié)議? FTP 協(xié)議即文件傳輸協(xié)議( File Transfer Protocol),它是TCP/IP 協(xié)議族的應用協(xié)議之一,是 Internet 上使用非常廣泛的一種通信協(xié)議。它是由支持 Internet 文件傳輸?shù)母鞣N規(guī)則所組成的集合,這些規(guī)則使 Internet 用戶可以把文件從一個主機拷貝到別一個主機無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 上。通過 TCP/IP 連接在一起的任何兩臺計算機,如果安裝了 FTP 和服務器,就可以通過 FTP 服務進行相互之間的文件傳輸,因而 為用戶提供了極大的方便和收益。 FTP 通常也表示用戶執(zhí)行這個協(xié)議所使用的應用程序。 FTP 和其他的 Internet 服務一樣,亦采用客戶機 /服務器方式。它要求用戶用本地的客戶端與服務器建立連接,然后才能從服務器上獲取文件( Download),或向服務器發(fā)送文件( Upload)。使用方法很簡單;啟動 FTP 程序先與主機連接,然后向遠程主機發(fā)出傳輸命令,遠程主機給予響應,執(zhí)行正確命令。 目前 Windows 操作系統(tǒng)最常用的 FTP 軟件有 WS-FTP,CUTEFTPT等。 FTP 有一個根本的限制,那就是:如果用戶未被某一服務 器授權,未取得 User Name 和 Password 就不能訪問該主機,實際上是不能遠程登陸( Remote Login)進入該主機。而 Anonymous FTP(匿名 FTP)則取消了這種限制。 2.2.2 FTP 文件傳輸?shù)闹饕攸c 用戶有合法的用戶名和口令的前提下才與服務器建立連接。通過客戶端軟件,用戶可以在權限允許的范圍內(nèi)進行文件更名、刪除、或傳送操作。 2.2.3 FTP 支持的文件傳送類型 FTP 支持的文件傳送類型,它們是 ASCII 和二進制映像。 ( 1) 文本文件( ASCII):在傳送文本文件時應該使用 ASCII。在 ASCII 模式中,將執(zhí)行網(wǎng)絡標準字符轉(zhuǎn)換。例如,行尾的字符在必要時根據(jù)目標操作系統(tǒng)進行轉(zhuǎn)換。 ( 2)二進制( Binary)文件的傳輸可執(zhí)行文件、圖像和壓縮文件等時應該使用二進制。在二進制模式中,一個字節(jié)接一個字節(jié)地移動文件。 2.2.4 FTP 在實現(xiàn)網(wǎng)絡傳輸時提供的 3 種模式 ( 1)流模式( Stream mode)。在這種模式下, FTP 將文件 作為一系列字節(jié)進行處理,適用于任何數(shù)據(jù)類型。 FTP 針對不同的文件結構指明文件的開始和結尾。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: ( 2)塊模式( Block mode)。在這種模式下, FTP 將文件 作為大量塊傳輸,每一個塊前都有一個報頭,包含有塊的大小和描述符。所謂的描述符是用來確定該塊在整個文件中的位置,指明該塊是不是最后一塊,同時,描述符還有一個位來描述數(shù)據(jù)是否可靠。 ( 3)壓縮模式( Compressed mode)。這種模式主要用于提高傳輸?shù)男?,能有效利用網(wǎng)絡帶寬。 2.3 FTP 在 Delphi6 的中的實現(xiàn) 在 Delphi6.0 中實現(xiàn) FTP 的 3 種方法 要在 Delphi6.0 中實現(xiàn) FTP 的下載功能,有以下 3 種方法: ( 1)使用 Delphi6.0 的 FastNet 組件頁中的 TNMFTP 組件來實現(xiàn)文 件下載。 ( 2)使用 Active X 提供的 Microsoft Internet Transfer 組件。 ( 3)使用 Delphi6.0 提供的 WinInet 單元,其實質(zhì)是系統(tǒng)的 API函數(shù)。 2.4 NMFTP 控件的介紹 NMFTP 控件位于控件面板的 FastNet 單元中,主要用于封裝 FTP協(xié)議及其常用處理單元。圖 2-1 就是 Delphi6 控件面板中的 FastNet頁面,第 5 個控件就是 NMFTP。 圖 2-1 FastNet 控件面板 2.4.1 常用屬性介紹 單擊 NMFTP 控件后,會顯示 Object Inspector 對話框,同時默認顯示多數(shù) Properties(屬性)的設置初始值,它主要是提供一些常用、便利的控件屬性設置,用于使該控件正常的動作。具體面板無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 如圖 2-2 所示 圖 2-2 NMFTP 控件的屬性面板 NMFTP 控件的屬性面板中主要包括下面一些屬性: About 屬性:主要是一些本控件的版權信息,主要用于知道本控件的一些注冊信息,如何升級和怎樣得到技術支持等。 FirewallType 屬性:主要用于設置防火墻類型。防火墻類型主要有三種 FTUser、 FtSite、 FtOpen。默認值是 FTUser。 FWAuthenticate 屬性:用于設置在通過防火墻時是否需要身份認證。默認值是 False,當其值為 True 時,要求身份認證;反之則不需要。 FWPassword 屬性:用于設置在通過防火墻時登錄所需的用戶口令。 FWUserID 屬性:用于用于設置在通過防火墻時登錄所需的用戶ID。 Host 屬性:主要用來指明本程序所要連接的遠程主機的名稱或IP 地址。 Name 屬性: NMFTP 控件的類實體名字。 ParseList 屬性:用于決定是否把內(nèi)送的文檔列表羅列入屬性FTPDirectoryList 中;反之則不,如果需要處理 文檔列表,只能無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 在 OnListItem 事件中進行。 Passive 屬性:用于決定怎樣進行 FTP 數(shù)據(jù)連接。默認值是 False,當其值為 False時,將以 Port方法連接;當值為 True 時則以 PASV方法連接。后者多用于 Proxy 中。 Password 屬性:當用戶向 FTP 服務器按指定用戶 ID 登錄時用于設置指定的用戶口令。 Port 屬性:主要用來指明本程序所要連接的遠程主機的端口號。在有些網(wǎng)絡服務中也用來指定遠端服務軟件正在監(jiān)聽的端口號。 Proxy 屬性:主要用來指明本程序所要連接的代理服務器的名稱或 IP 地址。如果 該服務并不需要代理服務器設為空即可。 ProxyPort 屬性:主要用來指明本程序所要連接的代理服務器使用的端口號。 ReporLevel 屬性:主要用來當 Status 屬性設置和 OnStatus 事件觸發(fā)時控制報告的數(shù)目等級。 Tag 屬性:工具型輔助屬性,主要用于存儲附加的整型數(shù)據(jù)。 TimeOut 屬性:即超時屬性用于定義在 Socket 連接過程中用于觸發(fā)異常的時間單位是毫秒。當該值被設為 0 時,將不會產(chǎn)生異常。 UserID 屬性:當用戶向 FTP 服務器請求建立連接時輸入的指定用戶 ID。 Vendor屬性:用于指明所要 連接的 FTP 服務器提供的是何種模式,這就能夠使應用程序在進行文檔列表時能夠采取適當?shù)姆绞?,如果模式不清楚,默認值將為用戶自動檢測。默認值是 NMOS_AUTO,常 用 的 有 NMOS_UNIX、 NMOS_WINDOWS、 NMOS_VM、 NMOS_BULL、NMOS_MAC、 NMOS_TOPS20、 NMOS_VMS、 NMOS_OS2、 NMOS_MVS_IBM、NMOS_MVS_INTERLINK 、 NMOS_OTHER 、 NMOS_AUTO 、 NMOS_NT 、NMOS_TANDEM、 NMOS_AS400、 NMOS_OS9、 NMOS_NETWARE 等。 2.4.2 常用方法介紹 NMFTP 控件在封裝了多數(shù)屬性、事件的同時、也為用戶提供了更多應用處理單元,這為程序員更好的控制 FTP 協(xié)議提供了銳利的武器。下面列出了我們在程序開發(fā)當中常用的一些方法。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: Allocate 方法:用于在遠程 FTP 服務器上分配空間來儲存文件。用法如下: ChangeDir 方法:用于更換遠程 FTP 服務器上的工作目錄。 Delete 方法:用于刪除遠程 FTP 服務器上的指定文件。 DoCommand 方法:用于向遠程 FTP 服務器上發(fā)送各種指令,法 FTP服務器端的 指令不規(guī)則時,這種方法最有用。 Download 方法:用于從遠程 FTP 服務器向本地計算機下載指定文件。 DownloadRestore 方法:用于從遠程 FTP 服務器向本地計算機下載指定文件。該文件以前曾經(jīng)下載過,但求未完成。 List 方法:用于把遠程 FTP 服務器當前工作目錄中的目錄和文件形成列表,當 ParseList 屬性為 True 時,在執(zhí)行 List 方法時內(nèi)送的文檔列表將被羅列入屬性 FTPDirectoryList 中包括名稱、大小、日期、屬性;反之則不,如果需要處理文檔列表時只能在OnListItem 事件中進行 。 List 方法運行成功將觸發(fā) OnSuccess事件;失敗將觸發(fā) OnFailue 事件。 MakeDirector 方法:用于在遠程 FTP 服務器當前工作目錄中建立新的目錄。 Mode方法:用于在遠程 FTP 服務器和本地計算機之間傳輸文件時,改變傳輸模式。 Nlist 方法:用于從遠程 FTP 服務器當前目錄中獲取所有目錄和文件的名字。如果需要處理文檔列表只能在 OnListItem 事件中進行。 NList 方法運行成功將觸發(fā) OnSuccess 事件;失敗將觸發(fā)OnFailue 事件。 Reinitialize 方法:用于初始化當前用 戶和 FTP 服務器建立起的有效連接,當它執(zhí)行時,將把連接置于無用的狀態(tài),要求重新輸入登錄帳號和口令。只有再次登錄正確才能政黨繼續(xù)工作。 RemoveDir 方法:用于在遠程 FTP 服務器當前工作目錄中刪除指定的目錄。 Rename 方法:用于在遠程 FTP 服務器當前工作目錄更名指定的文件。 Upload 方法:用于從本地計算機向遠程 FTP 服務器上的當前工作無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 目錄上傳指定文件。 UploadAppend 方法:用于從本地計算機向遠程 FTP 服務器上的當前工作目錄上傳指定文件。當該文件已經(jīng)存在時,則追加在該文件的尾部。 Uploadrestore 方法:用于從本地計算機向遠程 FTP 服務器上的當前工作目錄上傳指定文件。該文件曾經(jīng)上傳達室過但不完全。 UploadUnique 方法:用于從本地計算機向遠程 FTP 服務器上的當前工作目錄上傳指定文件。上傳的文件名字將和在本地時是一樣的,如果遠程 FTP 服務器存在同名文件時,該文件在上傳時將被改名。 2.4.3 常用事件介紹 單擊 NMFTP 控件后,會顯示 Object Inspector 窗口,在 Events頁面上會顯示出 NMFTP 控件常用的事件。它主要是提供一些常用、便利的事件控制來響應各種消息。 具體面板如圖 2-3 所示 圖 2-3 NMFTP 控件的事件面板 下面列出了我們在程序開發(fā)當中常用的一些事件: OnConnect 事件 :當用戶成功登錄到服務器時觸發(fā)該事件。 OnConnectionFailed 事件 : 當用戶登錄到服務器失敗時觸發(fā)該事件。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: OnAuthenticationFailed 事件 :當用戶使用非法的用戶名和密碼登錄服務器時觸發(fā)該事件,將更改 Handled 參數(shù)。 OnConnectionRequired 事件 :在調(diào)用 TNMFTP 組件的方法時,如果檢測到?jīng)]有連接到 FTP 服務器,就將觸發(fā)該事件; 處理這個事件的句柄時,應當調(diào)用 Connect 方法來連接 FTP 服務器。 OnDisconnect 事件 :當斷開與服務器的連接時所觸發(fā)的事件。 OnInvalidHost 事件 :當在 Host 屬性所批定的主機名非法時觸發(fā)該事件。 OnListItem 事件 :程序執(zhí)行 List 命令時每檢索到一個文件都會激發(fā)這個事件。 OnPacketRecvd 事件 :在文件下載過程中,收到一個完整的數(shù)據(jù)塊就會觸發(fā)這個事件,通常的用法是用這個句柄來顯示下載的進度。 OnpacketSent 事件 :在文件上載過程中,每發(fā)送一個完整的數(shù)據(jù)塊就會觸發(fā) 這個事件,通常的用法是用這個返回的句柄來顯示上載的進度。 Onstatus 事件 :當 FTP 服務響應命令返回狀態(tài)信息時將觸發(fā)這個事件。 OnSuccess 事件 : OnSuccess 事件是在服務器成功執(zhí)行命令后所觸發(fā)的事件。 OnError 事件 :如果在連接或傳輸數(shù)據(jù)的過程中出錯,就將自動觸發(fā)這個事件,它屬于 TOnErrorEvent 類型。 OnFailure 事件 :這個事件是在 TNMFTP 組件調(diào)用某個方法失敗時觸發(fā)的事件。 OnTransactionStart 事件 :當程序調(diào)用各種方法開始傳輸數(shù)據(jù)時所觸發(fā)的事件。 OnTransactionStop 事件 :當程序調(diào)用各種方法傳達室輸數(shù)據(jù)并且傳輸完成后所觸發(fā)的事件。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 2.5 客戶機 /服務器模式 在數(shù)據(jù)處理領域中,客戶機 /服務器( Client/Server,簡稱 C/S)體系結構受到極關注, C/S 已經(jīng)成為網(wǎng)絡計算機的主要方式。當然基于 TCP/IP 的網(wǎng)絡通信主要模式也是客戶機 /服務器方式。 2.5.1 什么是客戶機 /服務器 客戶機 /服務器并非是一種物理結構,也就是說,客戶機、服務器并非一定是兩臺計算機,它們也可能位于同一臺計算機上,甚至客戶機和服務器的地位可以互換,某一時刻處 于客戶機地位的在另一時刻可能充當服務器的角色。所以客戶機 /服務器的理解應是應用程序之間相互作用的一種模型。 客戶機程序(進程)發(fā)送請求給服務器程序(進程),服務器進程對客戶機的請求做出響應,并產(chǎn)生結果。一般來說,服務器進程完成一些比較通用而特殊的處理,如進行一些復雜的計算,大型數(shù)據(jù)庫的查詢等等。而客戶機進程則由于將上述一些特殊的應用交由服務器進程處理,因而可以專心于其它工作,如事務處理、人機交互等等。顯然,客戶機 /服務器模式下,客戶機為主動方,即請求方;而服務器為被動方,接受請求方。 網(wǎng)絡環(huán)境是客戶機 /服務 器模式的主要應用環(huán)境。計算機組網(wǎng)的目的是為了資源共享,在網(wǎng)絡中存在不同功能的設備,一般而言,作為服務器的計算機擁有比較豐富的資源,如高速 CPU、大容量硬盤、高速打印機、大型數(shù)據(jù)庫等等。而客戶機一般擁有相對比較少的資源,這時,客戶機利用 TCP/IP 應用程序來訪問服務器資源,而服務器的 TCP/IP 應用程序則可以將客戶機訪問的結果回送給客戶機。這就是基于客戶機 /服務器結構的 TCP/IP 應用。 2.5.2 如何采用客戶機 /服務器模式 客戶機一方,通信應用程序功能如下: 1. 打開通信信道(申請?zhí)捉幼郑?,并連接到服務器在 主機的保留端口,該端口對應服務器的通信進程。 2. 向服務器發(fā)出請求報文,等待接收應答。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 3. 從服務器方收到最終應答結果,或在不再請求時關閉信道并終止客戶機進程。 服務器一方,通信應用程序動作如下: 1打開通信信道(申請?zhí)捉幼郑ㄖ镜刂鳈C在某一保留端口接收客戶機請求。 2等待客戶機請求到達指定端口。 3接收到請求,啟動一新進程處理用戶機請求,同時釋放舊進程以響應新的客戶機請求,一旦服務完成,關閉新進程與客戶機的通信鏈路。 4繼續(xù)等待客戶機請求。 5如果不想響應客戶機請求,關閉服務器進程。 由此看出,在客 戶機 /服務器模式應用程序中的服務器進程必須先于客戶機進程啟動,直到客戶的響應結束或強迫終止。 2.6 第三方控件的安裝與刪除 眾所周知, Delphi 提供了大量的組件,使用這些組件基本上已能滿足我們的編程需求。但是在對于有特定要求的程序,僅僅使用Delphi 自帶的組件就無法適應了。另外, Delphi 自帶的一些組件功能比較簡單,很難滿足我們一些特定的要求。值得慶幸的是,現(xiàn)在有很多的第三方組件,這些組件功能強勁,而且覆蓋了編程的方方面面,極大的方便了我們。使用這些第三方組件往往達到事半功倍的效果,大大提高編程的 效率。同時還能使我們的程序更漂亮、更專業(yè)、更強大。所以第三組件是我們使用 Delphi 編程一大法寶。 第三方組件往往是 Delphi 自帶組件的擴展,是在 Delphi 自帶組件的基礎上加強功能,并進行功能細化和專業(yè)化。例如,有些第三方組件把按鈕、標簽細化為很多種,每一種實現(xiàn)一種特定的功能。另外一些第三組件是 Delphi 中沒有的,這些組件往往是根據(jù)編程時常遇到的需求,將一些常用的方法、函數(shù)以及 API 集成到這些組件中,編程時就不需要編寫這些程序了。如 TrayIcon、 Specomm 等。這些組件往往都特別有用。 下面就簡單 介紹一下三方控件在 Delphi無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 中的安裝和刪除方法 2.6.1 控件的安裝 1、對于單個控件, Componet-install component.-PAS 或 DCU文件 -install; 2、對于帶 *.dpk 文件的控件包, File-Open(下拉列表框中選*.dpk)-install 即可; 3、對于帶 *.bpl 文件的控件包, Install Packages-Add-bpl 文件名即可; 4、如果以上 Install 按鈕為失效的話,試試 Compile 按鈕; 5、是 run time lib 則在 option 下的 packages 下的 runtimepackes加之。 安裝時常見問題及解決方案: 如果編譯時提示文件找不到的話,一般是控件的安裝目錄不在 Delphi 的 Lib 目錄中,有兩種方法可以解決: 1、反安裝的源文件拷入到 Delphi 的 Lib 目錄下; 2、或者 Tools-Environment Options 中把控件源代碼路徑加入到 Delphi 的 Lib 目錄中即可。 注意:所安裝的控件是否與你所用的 Delphi 版本相適應。 2.6.2 控件的刪除 在 Component/Install Packages 中刪除。 選 Component/configure Palette有 pages 和 components 兩個區(qū)域雙擊 components 區(qū)域,選中要刪除得控件,下面有得 Delete 按鈕但系統(tǒng)提供的控件只能 Hide,不能 delete。打開控件所在的包文件 (*.dpk),從中刪除控件那個文件,再 重 新 編 譯 該 包 即 可 如 果 是 整 個 控 件 包 都 要 刪 除 的話 ,project-Option-Packages,刪掉那個 packages,ok 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 第 3 章 系統(tǒng)功能分析及界面設計 3.1 系統(tǒng)功能分析 系統(tǒng)開發(fā)的總體任 務是連接 FTP 服務器,上傳 /下載文件、對 FTP服務器站點的管理、服務器端提供 FTP 服務、允許遠程登錄下載服務器上的文件。功能層次圖如圖 3-1 所示 圖 3-1 FTP 客戶端功能層次圖 FTP 服務器端數(shù)據(jù)流圖,如圖 3-2 所示 圖 3-2 FTP 服務器端數(shù)據(jù)流圖 FTP 客戶端程序 本地文件操作 遠程文件操作 連接設置 客戶端 命令 解析 存儲設備 文件 傳輸 日志文件 文件數(shù)據(jù) 文件數(shù)據(jù) 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: FTP 客戶端數(shù)據(jù)流圖,如圖 3-3 所示 圖 3-3 FTP 客戶端數(shù)據(jù)流圖 系統(tǒng) 開發(fā)是在系統(tǒng)分析的基礎上完成的。此程序中的 FTP 服務器端及客戶端需要完成的功能主要有: 服務器端: 提供 FTP 客戶端登錄 提供文件上傳 /下載 記錄登錄客戶端的 IP、用戶名、密碼以及日志信息 客戶端: FTP 連接 修改文件傳輸方式 連接設置 通過代理服務器連接 FTP 服務器 上傳 /下載文件 日志文件操作 FTP 服務器站點管理 下載隊列操作 下載狀態(tài)顯示 自定義命令操作 連接 人機 交互 FTP 服務器 遠程操作 本地操作 存儲設備 用戶 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 本地文件夾及文件操作 遠程文件夾及文件操作 3.2 系統(tǒng)主界面設計 窗體名稱: Form1 窗體功能:實現(xiàn)各個模塊及菜單的顯示,是程序的主體。 控件名稱及屬性設置見附表 1。 控件位置設置如圖 3-4 所示 圖 3-4 控件位置設置圖 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 主要彈出菜單的設計如圖 3-5,3-6,3-7 所示 圖 3-5 隊列編輯器菜單 圖 3-6 本地文件菜單 圖 3-7 遠程文件菜單 3.3 站點管理器窗體設計 窗體名稱: Form2 窗體功能:對 FTP 服務器站點對行設置、保存、管理。 控件名稱及屬性設置見附表 2。 控件位置設置見圖 3-8 圖 3-8 站點管理器 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 3.4 閃現(xiàn)窗體的設計 窗體名稱: Splash 窗體功能:啟動程序時顯示軟件信息,從而消除 使用者等待軟件啟動時的焦慮心情。 效果如圖 3-9 所示 圖 3-9 閃現(xiàn)窗口 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 第 4 章 系統(tǒng)主要功能實現(xiàn) 4.1 閃現(xiàn)窗口的實現(xiàn)要點 在 PB 中實現(xiàn)閃現(xiàn)窗體直接 Open(form2),close(form1)即可 ,在Delphi 中這樣是行不通的,在 Delphi 中如果這樣做程序根本就執(zhí)行不出來,在關閉 form1 時程序就退出了,要在 Delphi 中實現(xiàn)閃現(xiàn)窗體 首先,設置要閃現(xiàn)的窗體屬性(在本程序中的窗體是 Splash)BorderStyle 屬性組值設為空, BorderStyle 設為 bsNone 目地是去 掉最大 /小化按鈕及去除工具欄 在 Project-Options.中將窗體 Splash 從 Auto-create forms:中移到 Available forms:中,目地是不讓程序自動創(chuàng)建該窗體。 在 Project 中加入如下代碼: begin Application.Initialize; Application.Title := FTP 精靈 ; splash:=Tsplash.Create(splash); /創(chuàng)建 splash splash.Show; /顯示 splash splash.Update; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); Splash.free; Application.Run; end. 接著在 splash 的 Create 中加入如下代碼: procedure TForm1.FormCreate(Sender: TObject); var CurrentTime:Longint; begin 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: CurrentTime:=GetTickcount div 1000; While (Longint(GetTickcount div 1000)提示符下使用 Help PWD指就會顯示 PWD 指令的具體幫助信息,同理于其他指令。我的 FTP客戶工具其實質(zhì)上就是集成這些指令并簡化這些命令行操作。 5.2 重要的有關 FTP 的第三方控件包的介紹 本節(jié)我們將討論利用第三方控件來實現(xiàn)簡易的 FTP 服務器的制作。 在 Delphi 控件包中能夠制作 FTP 服務器的有 ICS 和 FTPSerevr無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 等, ICS 控 件 包 , 可 以 在 主 頁 地 址http:/www.rtfm.be/fpiette/indexuk.htm 上 找 到 , 安 裝 后 , 在Delphi6 的控件面板上看見它的控件圖標如圖 5-1 所示,左邊第三個控件就是它。 圖 5-1 ICS 控件包的面板及圖標 5.2.1 常用屬性介紹 單擊 FTPServer 控件后,會顯示 Object Inspector 對話框,同時默認顯示多數(shù) Properties(屬性)的設置初始值,它主要是提供一些常用、便利的控件屬性設置,用于使該控件正常的動作。具體面板如圖 5-2 所示。 圖 5-2 FTPServer 控件的事件面板 FTPServer 控件的屬性面板中主要包括下面的一些屬性: Banner 屬性:控件中使用的標語 MaxClients 屬性: FTP 服務最大支持的用戶數(shù)。 Port 屬性: FTP 服務所使用的端 口,通常為 21,當自定義的 FTP無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 服務可以指定所希望的端口值。 Tag 屬性:工具型輔助屬性,主要用于存儲附加的整形數(shù)據(jù)。 UserData 屬性:工具型輔助屬性,主要用于存儲附加的整形數(shù)據(jù)。 5.2.2 常用方法介紹 FTPServer 控件在封裝腔作勢多數(shù)屬性、事件的同時,也為用戶提供了更多應用處理單元,這為程序員更好的控制 FTP 協(xié)議提供了更銳利的武器。如果想更好的掌握這些方法,就需要不斷的實踐、總結。這些方法多數(shù)是繼承自其父類的,少數(shù)則是 FTPServer 控件所特有的,在多數(shù)情況下,只需掌握這些基本情況就足 夠了。下面列出了我在程序開發(fā)當中常用的一些方法。 Start 方法:用于啟動 FTP 服務器。 Stop 方法:用于停止 FTP 服務器。 DiconnectAll:方法用于斷開所有與 FTP 服務器連接的用戶。 5.2.3 常用事件介紹 OnAlterDirector 事件:當改變指定 FTP 服務器目錄名稱時觸發(fā)該事件。 OnAnwerToClient 事件:當 FTP 服務器應答客戶機時觸發(fā)該事件。 OnAuthenticate 事件:當 FTP 服務器的用戶的身份得到驗證時觸發(fā)該事件。 OnBuildDirectory 事件:當 建立指定 FTP 目錄時 時觸發(fā)該事件。 OnChangeDirectory 事件:當進入指定 FTP 目錄 時觸發(fā)該事件。 OnClientCommand 事件:當 FTP 服務器收到來自客戶機指令時觸發(fā)該事件。 OnClientConnect 事件:當客戶機連接到 FTP 服務器成功時觸發(fā)該事件。 OnClientDisconnect 事件:當客戶從 FTP 服務器成功斷開時觸發(fā)該事件。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: OnMakeDirectory 事件:當運用客戶指令建立指定 FTP 目錄 時觸發(fā)該事件。 OnStart 事件:當啟動 FTP 服務器的服務時觸發(fā)該事件 。 OnStop 事件:當停止 FTP 服務器的服務時觸發(fā)該事件。 OnValidateGet 事件:當 FTP 服務器從客戶合法獲取數(shù)據(jù)時觸發(fā)該事件。 OnValidateGet 事件:當 FTP 服務器向客戶機合法傳輸出數(shù)據(jù)時觸發(fā)該事件。 5.3 FTP 服務器的設計 FTP 服務器軟件一般具有啟動服務、停止服務、日志管理、端口設置、斷開連接、退出系統(tǒng)等功能。 5.3.1 FTP 服務器界面設計 由上面的功能分析設計出如下界面,界面如圖 5-3 所示。 圖 5-3 FTP 服務器設計窗體圖 窗體上擺放的各控件描述如表 5-1 所示。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 表 5-1 控件描述表 控件類型 控件名稱 描述 窗體控件:屬于ToolButton1 類 Form1 程 序 的 主 窗 體 ,Caption 屬性設置為“ FTP 簡易服務器” 多行文本編輯控件:屬于ToolButton1 類 Memo1 用于記錄 FTP 服務器 產(chǎn) 生 日 志 的 具體內(nèi)容 工具條控件:屬于ToolButton1 類 ToolBar1 提供了 6 個ToolButton,它的Align 屬性什為alTop;Images 屬性設置為ImagesList1。 工具條上的按鈕控件:屬于ToolButton1 類 ToolButton1 用于下達遠程 FTP服務器啟動服務的指令, Caption屬性設置為“啟動服務” 工具條上的按鈕控件:屬于ToolButton1 類 ToolButton3 用于下達遠程 FTP服務器停止服務的指令, Caption屬性設置為“停止服務” 工具條上的按鈕控件:屬于ToolButton1 類 ToolButton5 用于更改 FTP 服務器的工作端口,Caption 屬性設置為“服務端口” 工具條上的按鈕控件:屬于ToolButton7 用于清除 FTP 服務器產(chǎn)生的日志內(nèi)無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: ToolButton1 類 容, Caption 屬性設置為“清除日志” 工具條上的按鈕控件:屬于ToolButton1 類 ToolButton9 用于顯示本程序的關于信息,Caption 屬性設置為“關于” 工具條上的按鈕控件:屬于ToolButton1 類 ToolButton11 用下下達退出當前應用程序的指令, Caption 屬性設置為“退出” 圖片列表控件:屬于 TImagesList類 ImagesList1 用于存放ToolButton 中應用的圖標。 FTPServer 控件:屬于 TFTPServer類 FTPServer1 處理 FTP 服務 的核心控件,它的屬性設置為默認值即可 主菜單設計控件:屬于 TMainMenu類 MainMenu1 為瀏覽器的主菜單,這包含了 2 個子菜單分別命名為文件,關于 狀態(tài)顯示條控件:屬于 TStatusBar類 StatusBar1 用于顯示程序運行時已經(jīng)連接的客戶機數(shù)目 5.3.2 FTP 服務器功能的實現(xiàn) 啟動服務 :調(diào)用 FtpServer 的 Start 方法即可實現(xiàn) 停止服務:調(diào)用 FtpServer 的 Stop 方法即可實現(xiàn),在停止后還要斷開所有客戶機的連接 FtpServer.DisconnectAll。 端口設 置:利用輸入框把用戶輸入的數(shù)字經(jīng)帶默認值的轉(zhuǎn)換函數(shù)無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 轉(zhuǎn)換賦值 FtpServer 的 Port 屬性即可 清除日志:調(diào)用 TMemo 的 Clear 方法就可輕松實現(xiàn) 關于:可以調(diào)用系統(tǒng) API 函數(shù)來顯示也可自行設計窗體實現(xiàn), API函數(shù)的調(diào)用方法在前面以經(jīng)介紹過不再重復 退出:調(diào)用 Close 方法即可,在 Close 事件中加入停止服務和斷開連接的相應語句 運行結果: 程序編譯后,單擊“啟動服務”按鈕, FTP 服務器開始工作;單擊“停止服務”按鈕, FTP 服務器停止服務;單擊“服務端口”按鈕,設置自定的端口進行 FTP 服務;單擊“消除日志 ”按鈕,程序?qū)⑶宄罩局械膬?nèi)容;單擊“退出”按鈕,系統(tǒng)斷開所有連接并退出。程序運行結果如圖 5-4 所示 : 圖 5-4 FTP 服務器運行結果 5.4 FTP 服務器端應用擴展分析 很多人可能都對駭客程序感興趣,得用上面的兩個工具就可以組成一個很好用的遠程文件控制工具。一個好的工具是在別人不知不覺時默默工作的,下面討論幾種常用的手法來藏匿、啟動自己的服無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 務器軟件。 5.4.1 注冊自動運行的幾種方法 注冊自動運行就是當開機時操作系統(tǒng)啟動后根據(jù)注冊表信息自動運行的一些程序。討論的幾種方法就是如何操作注冊表,在編譯程序時在 Unit 中加入 IniFiles 和 Registry 單元。 操作 Win.ini 文件中的 Run 項目,具體代碼如下: Procedure SetWinIni; Var Test:TRegistry; iniFile:TIniFile; Path:String; Begin Test:TRegistry.create; Test.rootkey:=HKEY_LOCAL_MACHINE; If test.openkey(software microsoftwindowscurrentversion,false) then Path:=test.readstring(systemroot); /獲得 WINDOWS 系統(tǒng)目錄 caption:=Path test.free; /獲得 Win.ini 的完整路徑 path:=path+ win.ini; inifile:=tinifile.create(path); inifile.writestring(windows,run,application.exename); /run=執(zhí)行文件名 inifile.free; end; 設置程序菜單中的啟動項目,并添加自運行項目。這種方法太容無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 易被發(fā)現(xiàn),所以不推薦使用。代碼如下: procedure setstartup; var test:tregistry; begin test:=tregistry.create; Test.rootkey:=HKEY_USERS; If Test.openkey(.defaultsoftwaremicrosoftwindowscurrentversionexplorershell folders,false) then Test.writestring(startup,application.exename); /獲得 ” 啟動 ” 程序項準確目錄 caption:=test.readstring(startup); test.free; end; 設置注冊表中的啟動運行項目,這種方法比較隱蔽,不易察覺。代碼如下: Procedure SetMyProgram; Var Test:tregistry; Begin Test:TRegistry.create; Test.rootkey:=HKEY_LOCAL_MACHINE; If test.openkey(software microsoftwindowscurrentversion,false) then Test.writestring(my program,application.exename); Caption:=test.readstring(my program); Test.free; End; 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 5.4.2 防止程序多次重復 運行 大制作利用端口進行服務的程序時,經(jīng)常要防止程序的重復執(zhí)行,因為同一份拷貝在運行時會使用相同的 IP 地址和相同端口,必然會產(chǎn)生沖突。下面討論幾種常用的防止程序二次運行的方法。它們的核心就是要在程序啟動過程中查找到程序是否已經(jīng)運行了。 利用 Windows API 函數(shù) FindWindows()查找窗口是否存在恢復Application和 Title 值上述步驟一般在主窗體的 OnCreate 事件中實現(xiàn),代碼如下: Procedure tform2.formcreate(sender:tobject); Var Zappname:array0.127 of char; Hold:string; Found:HWND; Begin Hold:=application.tile; /暫時修改窗口標題 application.title:=onlyone+inttostr(hinstance); /原窗口標題 strpcopy(zappname,hold); /查找窗口 found:=findwindow(nil,zappname); /恢復窗口標題 application.title:=hold; if found0 then begin /若找到則激活已運行的程序并結束自身 showwindow(found,sw_restore); application.terminate; end; end; 在 .DPR件中加上如下代碼: if hprevinst =0 then begin 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: /檢查沒有再調(diào)用 application.createform(myform,myform); application.run; end; 創(chuàng)建標題法,如果在創(chuàng)建 過程中發(fā)現(xiàn)已經(jīng)有該標題的存在則退出,代碼如下: program del3test; uses forms,windows,sysutils, del3unit in del3unit.pasform1; $R *.RES var hmutex:hwnd; ret:integer; begin application.initialize; application.title:=運行一次 ; hmutex:=createmutex(nil,false, 運行一次 ); ret:=getlasterror; if reterror_already_exists then begin application.createform(tform1,form1); application.run; end; else application.messagebox(程序已經(jīng)運行 ,notes!,MB_OK); releasemutex(hmutex); end. 5.4.3 任務管理器中的隱形 上面討論到的方法并不能使程序完全隱身,當你用 Ctrl-Alt-Del組合鍵來執(zhí)行任務管理器時會發(fā)現(xiàn)程序的標題出現(xiàn)在這時。那么怎無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 么樣才能隱藏應用程序不讓它出現(xiàn)在任務管理器中呢?方法有幾種 , 常 見 的 是 清 除 程 序 主 窗 口 的 標 題 , 還 有 就 是 調(diào) 用RegisterServiceProcess API 函數(shù)將程序注冊成為一個服務模式程序。需要注意的是 Windows NT 下沒有 RegisterServiceProcess 函數(shù)。 方法一:清除標題法 program project1; uses forms, unit1 in unit1.pasform1; $R *.RES begin /此處設置標題的清除 application.title:=; application.initialize; application.createform(tform1,form1); application.run; end. 另一種方法是: 在應用常量中加入以下代碼: const RSP_SIMPLE_SERVICE=1; RSP_UNREGISTER_SERVICE=0; 在函數(shù)聲明中加入以下代碼: procedure registerserviceprocess(dwprocessid, dwtype:dword);stdcall external kernel32.dll; function getcurrentprocessid():dword;stdcall external kernel32.dll 現(xiàn)在就可以使用 RegisterServiceProcess 函數(shù)了。 Procedure tform1.formcreate(sender:tobject); Begin Setwindowlong(application.handle,gwl_exstyle,ws_ex_toolwindo無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: w); RegisterServiceProcess(getcurrentprocessid(),RSP_SIMPLE_SERVICE); End; 5.4.4 可執(zhí)行文件的藏匿 在木馬的種植中有很多種方法,下面討論一下如何利用普通應用程序來設置安裝運行木馬程序。它的原理很簡單,其實就是制作一個安裝程序,但它是暗地里進行的。自制的最簡單的安裝程序有多種,最簡單的就是用“ copy/b setup.exe+run.exe set.exe” 把需要運行的程序加載在前一 個可執(zhí)行程序后面, setup.exe 文件的職責有兩個,其一是顯示假象讓別人不知道這是一個木馬安裝程序,其二就是真實目的從指定字長定位將木馬服務程序截取下來并運行安裝,由于木馬服務部分已經(jīng)采用了“隱形”技術,所以根本不會察覺,代碼部分就是定拷貝,這里不再闡述。還有一種方法是在資源文件 (.RES)中預先裝入木馬,并以數(shù)據(jù)形式存于當前可執(zhí)行程序,在合適的時機釋放即可。討論目的不是為了破壞,而是更好的了解更好的了解木馬機制而防范于未然和更好的提高個人的編程水平。下面這段代碼可用于從資源文件中釋放指定的文件。代碼如下 : procedure res_savetofile(form:pchar;fileto:strin); var tempdir:string; buf:pointer; size:longint; h,reshandle:cardinal; zip:file; begin h:=getmodulehandle(pchar(extractfilename(paramstr(0); tempdir:=; reshandle:=findresource(h,makeintresource(1),DAT); buf:=pointer(loadresource(h,reshandle); size:=sizeofresource(h,reshandle); 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: assignfile(zip,tempdir+fileto); rewrite(zip,1); try blockwrite(zip,buf,size) finally closefile(zip); end; end; 資源文件 test.rc 制作如下: 內(nèi)容: 1 DAT “test.ext” 制作: BRCC32 test.rc 在資源文件處加入: $R *.dfm /加入 TEST.R
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 冰雪經(jīng)濟未來趨勢及市場潛力深度分析
- 幼兒服飾發(fā)型課程設計
- 機床夾具課程設計謝辭
- 招標案例課程設計
- N-N-Diethyl-p-toluamide-生命科學試劑-MCE
- NG-Hydroxy-L-arginine-acetate-NOHA-acetate-生命科學試劑-MCE
- MerTK-IN-1-生命科學試劑-MCE
- LpxC-IN-14-生命科學試劑-MCE
- 無鏈自行車課程設計
- 品牌戰(zhàn)略規(guī)劃及實施路徑研究
- 工業(yè)制造企業(yè)戰(zhàn)略規(guī)劃
- 遼寧省工程咨詢集團有限責任公司 筆試 題庫
- 腦血管介入治療進修
- 勞動教育(紹興文理學院)知到智慧樹章節(jié)答案
- 小學2024年秋季學生1530安全教育記錄表(全學期)
- 浙江省溫州市2023-2024學年六年級上學期期末科學試卷(含答案)3
- 2022-2023學年廣東省廣州市番禺區(qū)祈福英語實驗學校七年級(上)期末英語試卷
- 同理心課件教學課件
- 靜療小組第一季度理論試卷(2024年)復習測試卷附答案
- 文化活動突發(fā)輿情應急預案
- 中國普通食物營養(yǎng)成分表(修正版)
評論
0/150
提交評論