国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

自動記錄應用軟件工作

2019-11-18 17:39:30
字體:
來源:轉載
供稿:網友
----實踐中常常期望有一個小軟件,它可以自動追蹤記錄當前應用軟件進行工作的時間和內容,例如:使用Word進行文件編輯排版的時間和文件名稱,使用AutoCAD軟件進行制圖的時間和圖擋名稱,玩某個游戲軟件的時間和游戲軟件的名稱等等。本文討論如何利用VB6.0編程實現這樣的軟件;本文的程序可同時追蹤記錄使用Word,Excel或AutoCAD14打開文件(包括打開網上鄰居中的文件)進行工作的開始時間、結束時間(以秒為單位)和使用的文件名(包括完整路徑)。

----下面給出從建立該軟件的工程項目到最后生成可執行文件的全過程,這個程序的關鍵是下面的Timer事件(以1000毫秒為周期),它利用了微軟的ActiveDocument技術(Active文擋),使用函數GetObject來獲取當前應用軟件對象,用函數DateDiff計算時間差,利用微軟的“MicrosoftWindowsCommnControl5.0”中的控件“ListView”來實現數據顯示界面;程序在Win98/NT下可以自動追蹤記錄使用Word97,Excel97和AutoCAD14的使用情況,具體敘述如下。

----(一)建立工程(項目)vb_time.vbp:

----在C盤建目錄:VB_TIME,今后我們將這個軟件的文件都放到這個目錄里。運行VB6.0,選“文件|新建工程”的“標準EXE”,出現窗體后可先將這個工程存盤:選菜單的“文件|工程另存為”,先取名“vb_time”存窗體(擴展名:frm),再取名“vb_time”存工程(擴展名:vbp)。

----(二)增加控件ListView與Timer:

----在菜單中選:“工程|部件”,出現“部件”對話框后選:MicrosoftCommanControl5.0,這時在控件欄里可以看見一些新增加的控件,其中我們需要將其中的“ListView”控件放入到窗體中;放入該控件后,用鼠標右擊窗體中“ListView1”,選“屬性”,出現“屬性頁”對話框,在“通用”部分改變“查看”為3,“外觀”為1;在“列首”部分插入4列,分別為:文件,時間,開始時間,結束時間.將Timer控件放入窗體,并設置其Interval屬性為1000(=1秒)。

----(三)增加代碼:

----(1)通用.聲明

OptionExplicit
PublicapplicationNameAsObject
'運行的應用軟件對象名
PublicPublicnewsessionAsBoolean
(2)FORM的Load過程:
PrivateSubForm_Load()
newSession=True
EndSub
(3)Timer1.Timer過程:
PrivateSubTimer1_Timer()
DimstrAsString
DimdocAsObject
OnErrorResumeNext
SetapplicationName=GetObject(,
"Excel.Application")'取得當前運行的Excel對象
Setdoc=applicationName.ActiveWorkBook
'當前Excel打開的工作簿文件
SetapplicationName=GetObject(,
"Word.Application")'取得當前運行的Word對象
Setdoc=applicationName.ActiveDocument
'當前Word的applicationName打開的文件
SetapplicationName=GetObject(,
"AutoCAD.Application")'取得當前運行的AutoCAD對象
Setdoc=applicationName.ActiveDocument
'當前AutoCAD打開的圖擋文件
str=doc.FullName
'當前applicationName打開的文件名(包括路徑)
Ifstr=""Then'當前無上述對象,
則用"無工作文件"命名
str="無工作文件"
EndIf
IfprevFile=strThen'時間增加
DimactDateAsDate
actDate=Now'
將系統當前的時間給變量actDate
itmX.SubItems(1)=DateDiff("s",
startDate,actDate)'計算開始時間與當前時間的差
ExitSub'退出子過程
EndIf
'若當前文件改變
IfprevFile<>""Then
endDate=Now
'將系統當前的時間給變量endDate
itmX.SubItems(3)=Time'"時間結束",
返回系統當前的時間。
applicationName=0
EndIf
prevFile=str
SetitmX=ListView1.ListItems.Add(,,str)
'在ListView中另起一行
itmX.SubItems(2)=Time
'"時間開始",返回系統當前的時間。
startDate=Now
'將系統當前的時間給變量startDate
EndSub


----(四)生成并運行可執行文件:

----選菜單的“文件|生成vb_time.exe”即可。可退出VB,運行vb_time.exe,該軟件運行后自動進行監視,一當您使用了Word(Excel或AutoCAD14)即開始記錄,直到該應用軟件退出;如桌面上無Word,Excel或AutoCAD14運行,或雖有但尚未打開一個文件,則該軟件以“無工作文件”進行記錄。有興趣的讀者可以進一步修改,使得程序可以監視更多的應用軟件特別是監視游戲軟件,同時將記錄結果存盤以供以后查詢使用。

----(五)幾個關鍵函數的說明:

----(1)DateDiff函數

----語法DateDiff(interval,date1,date2[,firstdayofweek[,firstweekofyear]])返回Variant(Long)的值,表示兩個指定日期間的時間間隔數目。DateDiff函數語法中有下列命名參數:

----interval必要。字符串表達式,表示用來計算date1和date2的時間差的時間間隔Date1,date2必要;Variant(Date)。計算中要用到的兩個日期。

----Firstdayofweek可選。指定一個星期的第一天的常數。如果未予指定,則以星期日為第一天。

----firstweekofyear可選。指定一年的第一周的常數。如未指定,則以包含1月1日的星期為第一周。

----interval參數的設定值如下(我們設置為s即秒):

----yyyy年;q季;m月;y一年的日數;d日;w一周的日數;ww周;h時;

----n分鐘;s秒

----(2)GetObject函數

----語法GetObject([pathname][,class])

----返回文件中的ActiveX對象的引用。pathname可選的,包含待檢索對象的文件的全路徑和名稱。如果省略pathname,則class是必需的。class代表該對象的類的字符串;class參數的語法格式為appname.objecttype,且語法的各個部分如下:

----appname必需的;Variant(String)。提供該對象的應用程序名稱(我們用Word)。

----objecttype必需的;Variant(String)。待創建對象的類型或類(我們用Application)。

----使用GetObject函數可以訪問文件中的ActiveX對象,而且可以將該對象賦給對象變量。可以使用Set語句將GetObject返回的對象賦給對象變量。例如將Word當前打開的文件對象賦給對象變量word:

----DimwordAsObject

----Setword=GetObject(,“Word.Application”)

----注意:當對象當前已有實例,或要創建已加載的文件的對象時,就使用GetObject函數。

----如果對象當前還沒有實例,或不想啟動已加載文件的對象,則應使用CreateObject函數。

----(3)ActiveDocument性質

----ActiveDocument得到一個Active文擋(activedocument)的文件對象,語法是:object.ActiveDocument

----參數object表示一個應用對象,當進入這個應用對象的ActiveDocument性質,由于應用對象已經被隱含,因此可以省略這個應用對象而使用它的屬性與方法。注意:對Excel,不用ActiveDocument而使用ActiveWorkBook->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江永县| 夏津县| 哈密市| 阿拉善左旗| 荆州市| 万全县| 嘉荫县| 西丰县| 临泽县| 青岛市| 高雄县| 萝北县| 白城市| 宝山区| 浦城县| 会昌县| 和龙市| 旌德县| 阳春市| 寻乌县| 阿巴嘎旗| 新宁县| 历史| 鹤壁市| 寻甸| 同江市| 依安县| 白沙| 肇东市| 长海县| 松原市| 南投市| 墨脱县| 和顺县| 六安市| 玉龙| 敦化市| 洪泽县| 乐陵市| 平顶山市| 萨迦县|