易語言仿360懸浮窗實現流量監控和內存優化的代碼

今天小編就爲大家分享一篇關於易語言仿360懸浮窗實現流量監控和內存優化的代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

DLL命令表

.版本 2
.DLL命令 GlobalMemoryStatus, 整數型, "kernel32", "GlobalMemoryStatus"
  .參數 lpBuffer, MEMORYSTATUS
.DLL命令 OpenProcess, 整數型, "Kernel32.dll", "OpenProcess"
  .參數 dwDesiredAccess, 整數型
  .參數 bInheritHandle, 整數型
  .參數 dwProcessId, 整數型
.DLL命令 SetProcessWorkingSetSize, 整數型, "kernel32.dll", "SetProcessWorkingSetSize"
  .參數 HANDLE
  .參數 SIZE_T
  .參數 SIZE_T
.DLL命令 CloseHandle, 整數型, "kernel32.dll", "CloseHandle"
  .參數 HANDLE, 整數型
.DLL命令 CreateToolhelp32Snapshot, 整數型, "Kernel32.dll", "CreateToolhelp32Snapshot"
  .參數 dwFlags, 整數型
  .參數 th32ProcessID, 整數型
.DLL命令 Process32First, 整數型, "Kernel32.dll", "Process32First"
  .參數 HANDLE, 整數型
  .參數 LPPROCESSENTRY32, PROCESSENTRY32
.DLL命令 Process32Next, 整數型, "Kernel32.dll", "Process32Next"
  .參數 HANDLE, 整數型
  .參數 LPPROCESSENTRY32, PROCESSENTRY32
.DLL命令 GetIfTable, 整數型, "iphlpapi", "GetIfTable"
  .參數 信息表, 字節集, 傳址
  .參數 信息表尺寸, 整數型, 傳址
  .參數 內參數, 整數型

全局變量表

.版本 2
.全局變量 當前內存位置, MEMORYSTATUS
.全局變量 原接收總計, 整數型
.全局變量 原發送總計, 整數型
.全局變量 單位, 文本型
.全局變量 已取得編號, 整數型

自定義數據類型表

.版本 2
.數據類型 MEMORYSTATUS
  .成員 結構長度, 整數型
  .成員 實際存儲器百分比, 整數型
  .成員 總物理內存, 整數型
  .成員 可用內存, 整數型
  .成員 總頁文件, 整數型
  .成員 可用頁文件, 整數型
  .成員 總虛擬內存, 整數型
  .成員 可用虛擬內存, 整數型
.數據類型 PROCESSENTRY32
  .成員 dwSize, 整數型
  .成員 cntUsage, 整數型
  .成員 th32ProcessID, 整數型
  .成員 th32DefaultHeapID, 整數型
  .成員 th32ModuleID, 整數型
  .成員 cntThreads, 整數型
  .成員 th32ParentProcessID, 整數型
  .成員 pcPriClassBase, 整數型
  .成員 dwFlags, 整數型
  .成員 szExeFile, 字節型, , "256"
.數據類型 MIB_IFROW
  .成員 dwInOctets, 整數型, , , 總共收到(字節)
  .成員 dwOutOctets, 整數型, , , 總共發送(字節)

Memory

.版本 2
.程序集 Memory
.子程序 Obtain_memory, MEMORYSTATUS
.局部變量 reg_Memory, MEMORYSTATUS
reg_Memory.結構長度 = 32
GlobalMemoryStatus (reg_Memory)
返回 (reg_Memory)
.子程序 Optimize_memory, 整數型
.參數 pid, 整數型
.局部變量 hProcess, 整數型
hProcess = OpenProcess (2035711, 0, pid)
.如果真 (SetProcessWorkingSetSize (hProcess, -1, -1) = 1)
  CloseHandle (hProcess)
  返回 (1)
.如果真結束
CloseHandle (hProcess)
返回 (0)
.子程序 Optimize_memory_all
.局部變量 hSnapShot, 整數型
.局部變量 prHandle, 整數型
.局部變量 pe32, PROCESSENTRY32
hSnapShot = CreateToolhelp32Snapshot (15, 0)
.如果真 (hSnapShot = 0)
.如果真結束
pe32.dwSize = 1024
prHandle = Process32First (hSnapShot, pe32)
.判斷循環首 (prHandle ≠ 0)
  Optimize_memory (pe32.th32ProcessID)
  prHandle = Process32Next (hSnapShot, pe32)
.判斷循環尾 ()
CloseHandle (hSnapShot)

Traffic

.版本 2
.程序集 Traffic
.子程序 Flow_downstream, 文本型, , 返回下載速度
.局部變量 temp, MIB_IFROW, , "0"
.局部變量 編號, 整數型
.局部變量 返回值, 文本型
編號 = Flow (temp)
.如果真 (原接收總計 = 0)
  原接收總計 = temp [編號].dwInOctets
.如果真結束
返回值 = 數值到格式文本 ((temp [編號].dwInOctets - 原接收總計) ÷ 1024, 1, 假)
原接收總計 = temp [編號].dwInOctets
返回 (返回值)
.子程序 Flow_upstream, 文本型, , 返回上傳速度
.局部變量 temp, MIB_IFROW, , "0"
.局部變量 編號, 整數型
.局部變量 返回值, 文本型
編號 = Flow (temp)
.如果真 (原發送總計 = 0)
  原發送總計 = temp [編號].dwOutOctets
.如果真結束
返回值 = 數值到格式文本 ((temp [編號].dwOutOctets - 原發送總計) ÷ 1024, 1, 假)
原發送總計 = temp [編號].dwOutOctets
返回 (返回值)
.子程序 Flow, 整數型
.參數 IFROW, MIB_IFROW, 參考 數組
.局部變量 緩衝區尺寸, 整數型
.局部變量 信息集, 字節集
.局部變量 成員數, 整數型
.局部變量 起始位, 整數型
.局部變量 次, 整數型
.局部變量 正確位置, 整數型
GetIfTable ({ 0 }, 緩衝區尺寸, 0)
.如果真 (緩衝區尺寸 ≤ 0)
  返回 (0)
.如果真結束
信息集 = 取空白字節集 (緩衝區尺寸)
.如果真 (GetIfTable (信息集, 緩衝區尺寸, 1) ≠ 0)
  返回 (0)
.如果真結束
成員數 = 取字節集數據 (取字節集左邊 (信息集, 4), #整數型, )
信息集 = 取字節集右邊 (信息集, 緩衝區尺寸 - 4)
重定義數組 (IFROW, 假, 成員數)
.如果 (已取得編號 = 0)
  .計次循環首 (成員數, 次)
    起始位 = (次 - 1) × 860
    IFROW [次].dwInOctets = 取字節集數據 (取字節集中間 (信息集, 起始位 + 553, 4), #整數型, )
    IFROW [次].dwOutOctets = 取字節集數據 (取字節集中間 (信息集, 起始位 + 577, 4), #整數型, )
    .如果真 (IFROW [次].dwInOctets > 1 且 IFROW [次].dwOutOctets > 1)
      正確位置 = 次
    .如果真結束
  .計次循環尾 ()
  已取得編號 = 正確位置
.否則
  起始位 = (已取得編號 - 1) × 860
  IFROW [已取得編號].dwInOctets = 取字節集數據 (取字節集中間 (信息集, 起始位 + 553, 4), #整數型, )
  IFROW [已取得編號].dwOutOctets = 取字節集數據 (取字節集中間 (信息集, 起始位 + 577, 4), #整數型, )
.如果結束
返回 (已取得編號)

顯示開機時間

.版本 2
.程序集 窗口程序集_窗口1
.子程序 _窗口1_創建完畢
標籤3.標題 = 取格式化時間 ()
標籤4.標題 = 單位
左邊 = _啓動窗口.左邊
頂邊 = _啓動窗口.頂邊 + 10 + _啓動窗口.高度
時鐘1.時鐘週期 = 1000 × 10
.子程序 _時鐘1_週期事件
銷燬 ()

仿360加速懸浮窗

.版本 2
.程序集 窗口程序集_啓動窗口
.子程序 __啓動窗口_創建完畢
.如果真 (是否爲調試版 () = 假)
  寫註冊項 (#本地機器, “software\microsoft\windows\CurrentVersion\Run\visual”, 取運行目錄 () + “\” + 取執行文件名 ()) ' 開機自啓動,不需要可以去掉
.如果真結束
左邊 = 取屏幕寬度 () - 取屏幕寬度 () ÷ 16 - 寬度
頂邊 = 取屏幕高度 () ÷ 9 - 高度
時鐘1.時鐘週期 = 1000
載入 (窗口1, , 假)
.子程序 取格式化時間, 文本型
.局部變量 目前時間, 整數型
.局部變量 時, 整數型
.局部變量 分, 整數型
.局部變量 秒, 整數型
.局部變量 返回值, 文本型
目前時間 = 取啓動時間 ()
單位 = “”
時 = 取整 (目前時間 ÷ 1000 ÷ 60 ÷ 60)
分 = 取整 (目前時間 ÷ 1000 ÷ 60 % 60)
秒 = 取整 (目前時間 ÷ 1000 % 60)
.如果真 (時 > 0)
  返回值 = 到文本 (時)
  .如果真 (單位 = “”)
    單位 = “時”
  .如果真結束
.如果真結束
.如果真 (分 > 0)
  返回值 = 返回值 + “.” + 到文本 (分)
  .如果真 (單位 = “”)
    單位 = “分”
  .如果真結束
.如果真結束
.如果真 (秒 > 0)
  返回值 = 返回值 + “.” + 到文本 (秒)
  .如果真 (單位 = “”)
    單位 = “秒”
  .如果真結束
.如果真結束
返回 (返回值)
.子程序 調整進度標籤
.參數 百分比, 整數型
標籤3.寬度 = 130 ÷ 100 × 百分比
標籤2.標題 = “內存” + #換行符 + 到文本 (百分比) + “%”
.子程序 _時鐘1_週期事件
.局部變量 Varmemory, MEMORYSTATUS
.判斷開始 (時鐘1.時鐘週期 = 1000)
  Varmemory = Obtain_memory ()
  調整進度標籤 (Varmemory.實際存儲器百分比)
  標籤5.標題 = “  ” + Flow_upstream () + “Kb/s” + #換行符 + “  ” + Flow_downstream () + “Kb/s”
.判斷 (時鐘1.時鐘週期 = 2)
  標籤3.寬度 = 標籤3.寬度 - 1
  .如果真 (標籤3.寬度 < 1)
    Optimize_memory_all ()
    時鐘1.時鐘週期 = 1
  .如果真結束
.判斷 (時鐘1.時鐘週期 = 1)
  .如果真 (當前內存位置.實際存儲器百分比 = -1)
    當前內存位置 = Obtain_memory ()
  .如果真結束
  標籤3.寬度 = 標籤3.寬度 + 1
  .如果真 (標籤3.寬度 = 到整數 (130 ÷ 100 × 當前內存位置.實際存儲器百分比))
    時鐘1.時鐘週期 = 1000
  .如果真結束
.默認
.判斷結束
.子程序 _標籤2_被雙擊, 邏輯型
.參數 橫向位置, 整數型
.參數 縱向位置, 整數型
.參數 功能鍵狀態, 整數型
當前內存位置.實際存儲器百分比 = -1
時鐘1.時鐘週期 = 2
Optimize_memory_all ()
.子程序 _清理內存_被選擇
當前內存位置.實際存儲器百分比 = -1
時鐘1.時鐘週期 = 2
Optimize_memory_all ()
.子程序 _關閉_被選擇
結束 ()

運行結果:

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對神馬文庫的支持。如果你想了解更多相關內容請查看下面相關鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章