本發(fā)明涉及信息安全技術(shù)領(lǐng)域,特別涉及一種監(jiān)控電腦應用使用情況的方法。
背景技術(shù):
在高速發(fā)展的信息時代,人們的大部分工作學習都離不開電腦。在企業(yè)上班族中,由于工作中都會接觸到電腦,并且企業(yè)局域網(wǎng)的電腦通常也都接入了互聯(lián)網(wǎng),這一方面方便了員工的工作,另一方面也使得員工可以輕松進行網(wǎng)絡沖浪,進行與工作無關(guān)的上網(wǎng)行為,例如上網(wǎng)購物、在線看視頻、炒股、玩游戲以及qq聊天等等,嚴重干擾了企業(yè)局域網(wǎng)的正常運轉(zhuǎn)以及其他員工的正常工作,為此公司管理者需要找到遠程查看管理員工的電腦桌面情況。
目前也有很多員工監(jiān)控管理軟件,但大多都是針對當前用戶所獲取焦點的窗口進行監(jiān)控,如果用戶同時在看電影,又在做工作相關(guān)的事就監(jiān)控不了其做的工作無關(guān)的事了。
技術(shù)實現(xiàn)要素:
本發(fā)明針對現(xiàn)有技術(shù)的缺陷,提供了,能有效的解決上述現(xiàn)有技術(shù)存在的問題。
一種監(jiān)控電腦應用使用情況的方法,包括以下步驟:
s1:準備應用程序分類數(shù)據(jù)庫在;
s2:抓取用戶打開的窗口信息;
s3:根據(jù)屏幕屏占比,窗口獲取焦點情況,及應用程序操作類別計算用戶所使用的目標程序;
s4:獲取應用程序使用時間生成可視化報表。
作為優(yōu)選,所述s1具體步驟如下:
s11:找到電腦軟件下載網(wǎng)站;
s12:根據(jù)分類需求編寫網(wǎng)絡數(shù)據(jù)抓取腳本;
s13:運行腳本抓取分類數(shù)據(jù)并導入數(shù)據(jù)庫;
s14:收集各臺電腦中安裝的應用軟件名稱;
s15:在數(shù)據(jù)庫中查找是否存在對該軟件的分類,若存在則繼續(xù)查找下一個應用程序,若不存在則進入步驟三;
s16:將應用程序存儲到未分類的數(shù)據(jù)表中進行人工分類;
s17:分類結(jié)果出來后,為各個分類設(shè)置應用程序操作類別,一、打開程序不需要用戶操作;二、打開程序需要用戶操作。
作為優(yōu)選,所述s2具體步驟如下:
s21:根據(jù)api獲取用戶桌面的句柄;
s22:獲取桌面下的所有子窗口及用戶打開的所有窗口;
s23:獲取每個窗口的屬性值,包括窗口的進程id,窗口所在位置;
s24:根據(jù)進程id獲取窗口所屬應用程序,并獲取應用程序路徑及名稱、版本信息。
作為優(yōu)選,所述s3的具體步驟如下:
s31:利用windowsapi獲取所有應用程序窗口列表,默認為從上層窗口往下排列;
s32:電腦屏幕大小獲?。?/p>
s33:計算頂層窗口屏占比;
s34:計算下一層窗口屏占比;
s35:分析用戶使用目標應用程序,首先判斷所有打開的應用是否包含不需要用戶操作的應用,若包含則判斷是否獲取了焦點,獲取焦點的即為目標應用程序,否則判斷該類應用中窗口屏幕占用率或顯示率大的為目標應用程序;如果都為需要用戶操作的應用,則獲取焦點的即為目標應用程序。
作為優(yōu)選,所述s33的具體步驟如下:
s331:判斷應用窗口左邊位置是否小于0,如果小于0則將顯示的左邊位置設(shè)為0,否則不變;
s332:判斷應用窗口頂部位置是否小于0,如果小于0則將顯示的頂部位置設(shè)為0,否則不變;
s333:判斷應用窗口右邊位置是否大于屏幕寬度,如果大于屏幕寬度則將顯示的右邊位置設(shè)為屏幕的寬,否則不變;
s334:判斷應用窗口底部位置是否大于屏幕高度,如果大于屏幕高度則將顯示的底部位置設(shè)為屏幕的高,否則不變;
s335:根據(jù)多邊形面積計算公式獲取屏幕面積大小、頂層窗口總大小和頂層窗口顯示大小;
s336:屏占比計算公式為:屏占比=窗口顯示面積/屏幕面積,顯示比例計算公式為:顯示比=窗口顯示面積/窗口總面積;
s337:將該層窗口存入到一個緩存列表list中。
作為優(yōu)選,所述s34的具體步驟如下:
s341:排除屏幕以外部分,依次執(zhí)行步驟s331、s332、s333、s334;
s342:排除被其上面窗口遮擋部分;
s343:計算顯示的面積及所有顯示面積相加;
s344:執(zhí)行步驟s336,s337直到所有窗口屏占比計算完為止。
作為優(yōu)選,所示s342的具體步驟如下:
s3421:將應用程序屏幕位置信息按順時針轉(zhuǎn)換為路徑點數(shù)據(jù)path1;
s3422:從list列表中取出一個窗口路徑path2與當前窗口路徑做比較,計算出當前窗口沒被遮擋的部分;
s34221:從path1第一個點開始,判斷是否path2遮擋,如果被遮擋就繼續(xù)判斷下一個點直到找到不被遮擋的點或到最后一個點為止,將這個點作為顯示面積的路徑path的起始點,記錄該點在path1中的下標index。如果到最后一個點還是被遮擋的,說明該層窗口被完全遮擋,顯示面積為0;
s34222:從path中最后一個點開始,判斷該點與在path1中第index+1個點組成的線段是否與path2有交點,若有交點則將交點記錄在path中,并記錄與path2中相交的線段的結(jié)束點下標index,執(zhí)行s3443;若沒有交點則將path1中第index+1個點記錄在path中,并將index加1,繼續(xù)執(zhí)行s34222:,當遇到下一個記入path的點與path的第一個點相同時,執(zhí)行步驟s3423;
s34223:從path中最后一個點開始,判斷該點與在path2中第index-1個點組成的線段是否與path1有交點,若有交點則將交點記錄在path中,并記錄與path1中相交的線段的結(jié)束點下標index,執(zhí)行s34222。若沒有交點則將path2中第index-1個點記錄在path中,并將index減1,繼續(xù)執(zhí)行s34223,當遇到下一個記入path的點與path的第一個點相同時,執(zhí)行步驟s3423;
s3423:判斷path1中是否還有沒有被path2遮擋但path中不存在,若有則以重新創(chuàng)建一個新的顯示面積的路徑n_path,并將該點記入n_path中,執(zhí)行步驟s34222;若不存在則執(zhí)行步驟s3422,直到list中取完為止。
作為優(yōu)選,所述s4具體步驟如下:
s41:每隔一定時間執(zhí)行s2、s3所有步驟,獲取用戶使用的目標應用程序;
s42:比對上一次記錄的應用程序與當前記錄應用程序是否為同一程序,若是則不做操作,如不是則將當前時間記為上一次應用使用結(jié)束時間及這次應用使用的開始時間;
s43:根據(jù)數(shù)據(jù)庫分類,計算出各個分類的總時間、無效時間、有效時間;
s44:根據(jù)上一步獲取的數(shù)據(jù)生成分析圖。
與現(xiàn)有技術(shù)相比本發(fā)明的優(yōu)點在于:全面分類應用數(shù)據(jù)庫;準確抓取用戶打開的窗口信息;準確獲取用戶使用的目標程序,能夠在同時打開多個窗口不能精確定位員工正在使用應用的問題;加強工作期間企業(yè)對員工的管理大大減少了企業(yè)管理者管理成本。
附圖說明
圖1為本發(fā)明實施例生成的員工使用程序分析圖。
具體實施方式
為使本發(fā)明的目的:技術(shù)方案及優(yōu)點更加清楚明白,以下舉實施例,對本發(fā)明做進一步詳細說明。
一種監(jiān)控電腦應用使用情況的方法,包括以下步驟:
s1:準備應用程序分類數(shù)據(jù)庫在;
s2:抓取用戶打開的窗口信息;
s3:根據(jù)屏幕屏占比,窗口獲取焦點情況,及應用程序操作類別計算用戶所使用的目標程序;
s4:獲取應用程序使用時間生成可視化報表。
所述s1具體步驟如下:
s11:在網(wǎng)絡上找到電腦軟件下載網(wǎng)站;
s12:根據(jù)分類需求編寫網(wǎng)絡數(shù)據(jù)抓取腳本;
s13:運行腳本抓取數(shù)據(jù)并導入數(shù)據(jù)庫;
s14:收集各臺電腦中安裝的應用軟件名稱;
s15:在數(shù)據(jù)庫中查找是否存在對該軟件的分類,若存在則繼續(xù)查找下一個應用程序,若不存在則進入步驟三;
s16:將應用程序存儲到未分類的數(shù)據(jù)表中進行人工分類。
s17:分類結(jié)果出來后,為各個分類設(shè)置應用程序操作類別,一、打開程序不需要用戶操作,比如:游戲、視頻、音樂、新聞等;二、打開程序需要用戶操作,比如:開發(fā)、設(shè)計、辦公工具等。
所述s2具體步驟如下:
s21:根據(jù)api獲取用戶桌面的句柄;
s22:獲取桌面下的所有子窗口及用戶打開的所有窗口;
s23:獲取每個窗口的屬性值,包括窗口的進程id,窗口所在位置;
s24:根據(jù)進程id獲取窗口所屬應用程序,并獲取應用程序路徑及名稱、版本信息。
所述s3的具體步驟如下:
s31:利用windowsapi獲取所有應用程序窗口列表,默認為從上層窗口往下排列;
s32:電腦屏幕大小獲??;
s33:計算頂層窗口屏占比;
由于頂層窗口無其他任何窗口遮擋,故只需除去超出屏幕外的部分,主要步驟如下:
s331:判斷應用窗口左邊位置是否小于0,如果小于0則將顯示的左邊位置設(shè)為0,否則不變;
s332:判斷應用窗口頂部位置是否小于0,如果小于0則將顯示的頂部位置設(shè)為0,否則不變;
s333:判斷應用窗口右邊位置是否大于屏幕寬度,如果大于屏幕寬度則將顯示的右邊位置設(shè)為屏幕的寬,否則不變;
s334:判斷應用窗口底部位置是否大于屏幕高度,如果大于屏幕高度則將顯示的底部位置設(shè)為屏幕的高,否則不變;
s335:根據(jù)多邊形面積計算公式獲取屏幕面積大小、頂層窗口總大小和頂層窗口顯示大?。?/p>
s336:屏占比計算公式為:屏占比=窗口顯示面積/屏幕面積,顯示比例計算公式為:顯示比=窗口顯示面積/窗口總面積;
s337:將該層窗口存入到一個緩存列表list中。
s34:計算下一層窗口屏占比;
下一層除超出屏幕外的部分外還可能被其上面的窗口遮擋,其計算步驟如下:
s341:排除屏幕以外部分,依次執(zhí)行步驟s331、s332、s333、s334;
s342:排除被其上面窗口遮擋部分;
s3421:將應用程序屏幕位置信息按順時針轉(zhuǎn)換為路徑點數(shù)據(jù)path1;
s3422:從list列表中取出一個窗口路徑path2與當前窗口路徑做比較,計算出當前窗口沒被遮擋的部分;
s34221:從path1第一個點開始,判斷是否path2遮擋,如果被遮擋就繼續(xù)判斷下一個點直到找到不被遮擋的點或到最后一個點為止,將這個點作為顯示面積的路徑path的起始點,記錄該點在path1中的下標index。如果到最后一個點還是被遮擋的,說明該層窗口被完全遮擋,顯示面積為0;
s34222:從path中最后一個點開始,判斷該點與在path1中第(index+1)個點組成的線段是否與path2有交點,若有交點則將交點記錄在path中,并記錄與path2中相交的線段的結(jié)束點下標index,執(zhí)行s3443;若沒有交點則將path1中第(index+1)個點記錄在path中,并將index加1,繼續(xù)執(zhí)行s34222:,當遇到下一個記入path的點與path的第一個點相同時,執(zhí)行步驟s3423;
s34223:從path中最后一個點開始,判斷該點與在path2中第(index-1)個點組成的線段是否與path1有交點,若有交點則將交點記錄在path中,并記錄與path1中相交的線段的結(jié)束點下標index,執(zhí)行s34222。若沒有交點則將path2中第(index-1)個點記錄在path中,并將index減1,繼續(xù)執(zhí)行s34223,當遇到下一個記入path的點與path的第一個點相同時,執(zhí)行步驟s3423;
s3423:判斷path1中是否還有沒有被path2遮擋但path中不存在,若有則以重新創(chuàng)建一個新的顯示面積的路徑n_path,并將該點記入n_path中,執(zhí)行步驟s34222;若不存在則執(zhí)行步驟s3422:,直到list中取完為止。
s343:計算顯示的面積及所有顯示面積相加;
s344:執(zhí)行步驟s336,s337直到所有窗口屏占比計算完為止;
s35:分析用戶使用目標應用程序,首先判斷所有打開的應用是否包含不需要用戶操作的應用,若包含則判斷是否獲取了焦點,獲取焦點的即為目標應用程序,否則判斷該類應用中窗口屏幕占用率或顯示率大的為目標應用程序;如果都為需要用戶操作的應用,則獲取焦點的即為目標應用程序。
所述s4具體步驟如下:
s41:每隔一定時間(如2秒)執(zhí)行s2、s3所有步驟,獲取用戶使用的目標應用程序;
s42:比對上一次記錄的應用程序與當前記錄應用程序是否為同一程序,若是則不做操作,如不是則將當前時間記為上一次應用使用結(jié)束時間及這次應用使用的開始時間;
s43:根據(jù)數(shù)據(jù)庫分類,計算出各個分類的總時間、無效時間(使用游戲,音樂、視頻、看新聞、其他應用和未使用任何應用的時間)、有效時間(使用開發(fā)、設(shè)置等應用的時間)(注:有效、無效標準以程序員為例);
s44:根據(jù)上一步獲取的數(shù)據(jù)生成分析圖,如圖1所示:該圖為某一員工在上班和下班時間內(nèi)使用程序的情況,其中有效時間為使用與工作相關(guān)的應用時間。
本領(lǐng)域的普通技術(shù)人員將會意識到,這里所述的實施例是為了幫助讀者理解本發(fā)明的實施方法,應被理解為本發(fā)明的保護范圍并不局限于這樣的特別陳述和實施例。本領(lǐng)域的普通技術(shù)人員可以根據(jù)本發(fā)明公開的這些技術(shù)啟示做出各種不脫離本發(fā)明實質(zhì)的其它各種具體變形和組合,這些變形和組合仍然在本發(fā)明的保護范圍內(nèi)。