1. 程式人生 > 實用技巧 >使用vb 監控電腦活動記錄

使用vb 監控電腦活動記錄

最近看到了一個日文版的監控電腦活動記錄的軟體,又在win 32 APi中看到了GetForegroundWindow函式,於是決定動動小手用vb寫個監控電腦活動記錄的小程式。

主要函式

函式名 引數 返回值
GetForegroundWindow(void) 當前視窗的控制代碼
GetWindowText(HWND hWnd,LPTSTR lpString,Int nMaxCount) hWnd:視窗控制代碼
lpString:接收視窗標題文字的緩衝區的指標
nMaxCount:指定緩衝區中的最大字元數
如果成功則返回標題字串的字元個數。如果視窗無標題欄或文字,或標題欄為空,或視窗或控制的控制代碼無效,則返回值為零。

實現

迴圈獲取當前焦點所在視窗的標題,然後寫入到日誌檔案中。最後設定開啟自啟動,隱藏命令列視窗。


Imports System
Imports System.io

Module Module1
   private Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
   'Win32 Api
   Private Declare Function GetForegroundWindow Lib "user32" () As Long
   Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
   
   Sub Main()
	  
      Dim bt As Boolean = True
	  ' 儲存標題文字
      Dim stext As String
	  ' 儲存上一個視窗控制代碼
	  Dim hwnd As Long
	  ' 儲存當前視窗控制代碼
	  Dim curHwnd As Long
	  ' 書寫流寫入日誌檔案
	  Dim sw As StreamWriter
	  ' 日誌檔案儲存路徑
	  Dim path As String = "c:\log.txt"
	  
	  ' 如果存在日誌檔案則跳過,否則建立一個日誌檔案
	  If Not File.Exists(path) Then
		    File.Create(path)
	  End If
	  
	  sleep(3000)
	  
	  ' 這裡是個死迴圈 
	  While bt
	  
	      stext = Space(255)
		  ' 獲取當前視窗控制代碼
		  hwnd = GetForegroundWindow
		  
		  ' 如果當前是新視窗則寫入新視窗標題
		  If hwnd <> curHwnd Then 
		        curHwnd = hwnd
				' 獲取視窗標題
				GetWindowText(hwnd,stext,255)
				
				sw = System.IO.File.AppendText(path)
				
				' 寫入新視窗標題,格式 yyyy年mm月dd日 hh:hh:ss + 標題
				Using sw
					sw.WriteLine(String.Format("{0:F}", DateTime.Now) +"  "+ stext) 
					sw.Flush() 
				End Using
				
		
		  End If
          sleep(2000)
		  
      End While
	  
   End Sub
End Module

開啟自啟動

新建一個listener.vbs檔案(其中C:\listener.exe是vb編譯後的檔案路徑,Run引數0表示隱藏命令列視窗):


Dim ws 
set ws = WScript.createObject("WScript.shell") 
ws.Run "C:\listener.exe", 0, TRUE

1. 執行 -> shell:startup

2. 開始選單 -> 程式 -> 啟動

3. 執行 -> gpedit.msc

4. 啟動 -> 開機中新增listener.vbs指令碼

執行

重啟電腦後我們可以再工作管理員中看到執行的指令碼

  • 然後檢視日誌檔案C:\log.txt

  • 需要關閉結束程序即可