真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

vb點(diǎn)虐 監(jiān)控 VBnet監(jiān)控系統(tǒng)課程設(shè)計(jì)

vb點(diǎn)虐 中如何設(shè)計(jì)一個監(jiān)控程序?

以記事本為例

成都創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)與策劃設(shè)計(jì),金門網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:金門等地區(qū)。金門做網(wǎng)站價格咨詢:028-86922220

Public Class Form1

Public Sub ShellAndWait(ByVal ProcessPath As String)

Dim objProcess As System.Diagnostics.Process

Try

objProcess = New System.Diagnostics.Process()

objProcess.StartInfo.FileName = ProcessPath

objProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal

objProcess.Start()

objProcess.WaitForExit()

objProcess.Close()

Catch

MessageBox.Show("無法執(zhí)行文件 " ProcessPath, "錯誤")

End Try

End Sub

'監(jiān)視程序悄好攔就可以了,若果監(jiān)視別的窗體的話,用SPY++ 找到句柄,配合FindWindowEx,SendMessage根啟胡據(jù)其屬性做

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

ShellAndWait("Notepad.exe")

MessageBox.Show("筆記本被關(guān)襪液閉后我才會出現(xiàn)")

End Sub

End Class

VB.NET中監(jiān)視文件夾的變化

有時候 處于業(yè)務(wù)的需要 我們要不斷的監(jiān)視文件的變化 比如文件的創(chuàng)建 刪除 重命名等 而且某些人要確保重要文件的只讀 并且要及時的報(bào)告文件版本的變更情況 或者 你想監(jiān)視你的文件夾被別人更改 肆意刪除而又不知道是誰干的 在什么時候干的?于是你就考慮要寫一個監(jiān)視程序 偷偷的 記錄文件夾 *** 作的情況

有些人采取常規(guī)的方式 即寫一個桌面應(yīng)用程序 其界面可能是隱藏的 采用每隔一個事件片段讀取文件信息 然后寫到一個log文件中 然后設(shè)置系統(tǒng)啟動的事件自動加載程序 (好像很多人是這樣竊取QQ密碼的 ) 其埋早嫌缺點(diǎn) 不是連續(xù)的獲取信息 因?yàn)樗麖澥謧儾捎昧薚imer的tick事件 在NT系統(tǒng)中 可能要一定的權(quán)限才可以運(yùn)行 比如要管理員身份等 還有系統(tǒng)中會有進(jìn)程顯示 顯然很容易shut down

我們建議的方案 采用 NET的Windows Service 首先可以克服以上缺點(diǎn) 而且較VB 的編程而言 NET中寫windows service一如反掌

思路 在 NET創(chuàng)建的服務(wù)中調(diào)用System IO FileSystemWatcher對象 每次被監(jiān)視的文件或者文件夾變化的時候 調(diào)用IO系統(tǒng)的FileStream和StreamWriter把變更信息寫到log文件中

關(guān)于 NET中的Windows服務(wù)

Windows服務(wù) 是一些長久運(yùn)行的程序 而并不需要依靠登錄用戶或客戶程序來保持它的運(yùn)行 它們沒有自己的用戶界面 可以在它們自己獨(dú)有的安全級別和會話上下文中運(yùn)行 我們比較熟悉的Windows服務(wù)范例包含了從打印池到SQL服務(wù)器以及它的分布式事務(wù)協(xié)作(DTC) 服務(wù)只可以運(yùn)行在NT 以及后繼產(chǎn)品比如XP下運(yùn)行 它們通過Microsoft Management Console (MMC)提供了一個專門的管理界面(開始-運(yùn)行 Services msc)

在 NET中創(chuàng)建項(xiàng)目的時候 有一個Windows服務(wù)的模板 選擇新建 這個操作自動為我建立了一個新的類 它是繼承了 NET內(nèi)建了System ServiceProcess ServiceBase類 同時它提供給我一個可視化的設(shè)計(jì)器 一個圖形化的快速開發(fā)工具 它特別的為那些本身沒有用戶界面的工程 我可以點(diǎn)擊這個設(shè)計(jì)器 設(shè)定我的服務(wù)的名字(我命名為 File Watching )

當(dāng)啟動某項(xiàng)服務(wù)時 系統(tǒng)將定位相應(yīng)的可執(zhí)行文件 并運(yùn)行該服務(wù)的 OnStart 方法(它包含在可執(zhí)行文件內(nèi)) 但是 運(yùn)行服務(wù)與運(yùn)行可執(zhí)行文件并不相同 可執(zhí)行文件僅加載服務(wù) 服務(wù)則通過 服務(wù)控制管理器 訪問(例如啟動和停止)

當(dāng)首次在服務(wù)上調(diào)用 開始 時 可執(zhí)行文件將調(diào)用 ServiceBase 派生類的構(gòu)造函數(shù) 在構(gòu)造函數(shù)執(zhí)行之后將立即調(diào)用 OnStart 命令處理方法 在服務(wù)首次加載之后 構(gòu)造函數(shù)不會再次執(zhí)行 因此有必要將構(gòu)造函數(shù)執(zhí)行的處理和 OnStart 執(zhí)行的處理分開 可以由 OnStop 釋放的任何資源都應(yīng)在 OnStart 中創(chuàng)建 如果服務(wù)在 OnStop 釋放資源后再次啟動 那么 在構(gòu)造函數(shù)中創(chuàng)建資源會妨礙這些資源的正確創(chuàng)建

服務(wù)控制管理器 (SCM) 提供與服務(wù)交互的方式 可以使用 SCM 將 開始 (Start) 停止 (Stop) 暫停 (Pause) 繼續(xù) (Continue) 或自定義命令傳遞到服務(wù)中 SCM 使用 CanStop 和 CanPauseAndContinue 的值 決定服務(wù)是否接受 停止 暫停 或 繼續(xù) 命令 僅當(dāng)服務(wù)類中相應(yīng)的屬性 CanStop 或 CanPauseAndContinue 為 true 時 才會在 SCM 的上下文菜單中啟用 停止 暫停 或 繼續(xù) 如果已啟用 則相應(yīng)的命令將傳遞到服務(wù) 并且調(diào)用 OnStop OnPause 或 OnContinue 如果 CanStop CanShutdown 或 CanPauseAndContinue 為 false 則即使已實(shí)現(xiàn)相應(yīng)的命令處理方法(如 OnStop) 也不會予以處理

上面是創(chuàng)建任何一個服務(wù) 我們都會涉及到的 只是 具體在監(jiān)視文件夾變睜稿化的時候 我們用到了FileSystemWatcher

關(guān)于FileSystemWatcher

偵聽文件系統(tǒng)更改通知 并在目錄或目錄中的文件發(fā)生更改時引發(fā)事件

使用 FileSystemWatcher 監(jiān)視指定目錄中的更改 可監(jiān)視指定目錄中的文件或子目錄的更改 該組件可以監(jiān)視本地計(jì)算機(jī) 網(wǎng)絡(luò)驅(qū)動器或遠(yuǎn)程計(jì)算機(jī)上的文件 (當(dāng)然只讀的媒體介質(zhì)比如cd和dvd 它們文件的屬性不會改變 所以也就不能觸發(fā)事件)

若要監(jiān)視所有文件中的更改 請將 Filter 屬性設(shè)置為空字符串 ( ) 若要監(jiān)視特定的文件 請將 Filter 屬性設(shè)置為該文件名 例如 若要監(jiān)視文件 MyDoc txt 中的更改 請將 Filter 屬性設(shè)置為 MyDoc txt 也可以監(jiān)視特定類型文件中的更改 例如 若要監(jiān)視文本文件中的更改 請將 Filter 屬性設(shè)置為 * txt

可監(jiān)視目錄或文件中的若干種更改 例如 可監(jiān)視文件或目錄的 Attributes LastWrite 日期和時間或 Size 方面的更改 通過將 FileSystemWatcher NotifyFilter 屬性設(shè)置為 NotifyFilters 值之一來達(dá)到此目的

可監(jiān)視文件或目錄的重命名 刪除或創(chuàng)建 例如 若要監(jiān)視文本文件的重命名 請將 Filter 屬性設(shè)置為 * txt 并調(diào)用 WaitForChanged 方法之一 調(diào)用時給出 WatcherChangeTypes 值的 Renamed

   Demo

新建一個project 選擇windows 服務(wù)類型 命名為WinServiceFileWatching 我們看到project的引用中自動添加了System ServiceProcess名空間(這就是創(chuàng)建一個服務(wù)的函數(shù)集) 從工具中的組件中選擇FileSystemWatcher 拖放到service 的設(shè)計(jì)模式上 然后設(shè)置如下屬性

Filter 獲取或設(shè)置篩選字符串 用于確定在目錄中監(jiān)視哪些文件 我們設(shè)置為* * 即所有文件 IncludeSubdirectories 獲取或設(shè)置一個值 該值指示是否監(jiān)視指定路徑中的子目錄 設(shè)置為true Path 獲取或設(shè)置要監(jiān)視的目錄的路徑 設(shè)置為我們要監(jiān)視的對象 比如C:\DonnetData

然后添加以下代碼

Protected Overrides Sub OnStart(ByVal args() As String)

在此處添加啟動服務(wù)的代碼 此方法應(yīng)設(shè)置具體的操作

以便服務(wù)可以執(zhí)行它的工作

FileSystemWatcher EnableRaisingEvents = True

我們也可以根據(jù)輸入的參數(shù)args動態(tài)設(shè)定要監(jiān)視的對象

FileSystemWatcher path= args( )

End Sub

創(chuàng)建文件(夾)時候觸發(fā) 記錄創(chuàng)建信息到e:\log txt中

Private Sub FileSystemWatcher _Created(ByVal sender As Object ByVal e As System IO FileSystemEventArgs) Handles FileSystemWatcher Created

Dim fs As New FileStream( e:\log txt FileMode Append)

Dim sw As New StreamWriter(fs)

sw WriteLine(Now() Microsoft VisualBasic vbTab 創(chuàng)建 e FullPath)

sw Close()

fs Close()

End Sub

Rename文件(夾)時候觸發(fā) 記錄創(chuàng)建信息到e:\log txt中

Private Sub FileSystemWatcher _Renamed(ByVal sender As Object ByVal e As System IO RenamedEventArgs) Handles FileSystemWatcher Renamed

Dim fs As New FileStream( e:\log txt FileMode Append)

Dim sw As New StreamWriter(fs)

sw WriteLine(Now() Microsoft VisualBasic vbTab 重命名 e OldFullPath e FullPath)sw Close()

fs Close()

End Sub

刪除文件(夾)時候觸發(fā) 記錄創(chuàng)建信息到e:\log txt中

Private Sub FileSystemWatcher _Deleted(ByVal sender As Object ByVal e As System IO FileSystemEventArgs) Handles FileSystemWatcher Deleted

Dim fs As New FileStream( e:\log txt FileMode Append)

Dim sw As New StreamWriter(fs)

sw WriteLine(Now() Microsoft VisualBasic vbTab 刪除 e FullPath)

sw Close()fs Close()

End Sub

到目前為止 這個服務(wù)已經(jīng)寫好了 下面作一個安裝程序

在service的設(shè)計(jì)模式上點(diǎn)擊右鍵 選擇添加安裝程序 系統(tǒng)會自動添加一個類ProjectInstaller 設(shè)計(jì)模式上有一個ServiceProcessInstaller 和ServiceInstaller 設(shè)置ServiceInstaller 的Display Name為File Watching Service starttype為Automatic 表示自動啟動 設(shè)置ServiceProcessInstaller 的account為LocalSystem

由于服務(wù)是不能運(yùn)行的 我們選擇生成解決方案 ok!

最后安裝我們的服務(wù)

NET Framework自帶了一個工具 InstallUtil 使用很簡單InstallUtil c:\winservicefilewatching\bin\winservicefilewatching exe 剛才編譯好的程序的路徑 這樣就安裝好了 Uninstall也很容易 首先SCM中關(guān)閉服務(wù) InstallUtil/u c:\ \winservicefilewatching exe the same path

這樣在系統(tǒng)的services中就會多出一個服務(wù) 顯示為File Watching Service 選擇啟動就可以開始監(jiān)視

總結(jié)

lishixinzhi/Article/program/net/201311/15520

vb點(diǎn)虐 如何監(jiān)測文件被點(diǎn)擊

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

FileSystemWatcher1.NotifyFilter = IO.NotifyFilters.DirectoryName Or IO.NotifyFilters.FileName‘監(jiān)控文件夾和皮察文件蔽握畝。

FileSystemWatcher1.IncludeSubdirectories = True’監(jiān)控子文件夾

End Sub

Private Sub FileSystemWatcher1_Renamed(sender As Object, e As IO.RenamedEventArgs) Handles FileSystemWatcher1.Renamed

MsgBox(e.FullPath vbCrLf e.Name)

End Sub'捕獲新路徑

你監(jiān)控test不就好了,若要排除其他文件夾,IncludeSubdirectories 設(shè)為假,用多個FileSystemWatcher就行了,用數(shù)組或其他方式宏森創(chuàng)建。

vb點(diǎn)虐 監(jiān)控路徑上的任一文件夾,當(dāng)重命名時觸發(fā)事件。

你用兩個 FileSystemWatcher,一個監(jiān)控父文件夾,并禁敬臘止其改名,另一個監(jiān)碧消控子文件夾,并改名后提示就亮慧滑是了


本文題目:vb點(diǎn)虐 監(jiān)控 VBnet監(jiān)控系統(tǒng)課程設(shè)計(jì)
分享路徑:http://weahome.cn/article/ddpojss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部