溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

易語言如何仿360懸浮窗實(shí)現(xiàn)流量監(jiān)控和內(nèi)存優(yōu)化

發(fā)布時(shí)間:2021-08-06 13:40:38 來源:億速云 閱讀:182 作者:小新 欄目:編程語言

這篇文章將為大家詳細(xì)講解有關(guān)易語言如何仿360懸浮窗實(shí)現(xiàn)流量監(jiān)控和內(nèi)存優(yōu)化,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

DLL命令表

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

全局變量表

.版本 2
.全局變量 當(dāng)前內(nèi)存位置, MEMORYSTATUS
.全局變量 原接收總計(jì), 整數(shù)型
.全局變量 原發(fā)送總計(jì), 整數(shù)型
.全局變量 單位, 文本型
.全局變量 已取得編號(hào), 整數(shù)型

自定義數(shù)據(jù)類型表

.版本 2
.數(shù)據(jù)類型 MEMORYSTATUS
  .成員 結(jié)構(gòu)長度, 整數(shù)型
  .成員 實(shí)際存儲(chǔ)器百分比, 整數(shù)型
  .成員 總物理內(nèi)存, 整數(shù)型
  .成員 可用內(nèi)存, 整數(shù)型
  .成員 總頁文件, 整數(shù)型
  .成員 可用頁文件, 整數(shù)型
  .成員 總虛擬內(nèi)存, 整數(shù)型
  .成員 可用虛擬內(nèi)存, 整數(shù)型
.數(shù)據(jù)類型 PROCESSENTRY32
  .成員 dwSize, 整數(shù)型
  .成員 cntUsage, 整數(shù)型
  .成員 th42ProcessID, 整數(shù)型
  .成員 th42DefaultHeapID, 整數(shù)型
  .成員 th42ModuleID, 整數(shù)型
  .成員 cntThreads, 整數(shù)型
  .成員 th42ParentProcessID, 整數(shù)型
  .成員 pcPriClassBase, 整數(shù)型
  .成員 dwFlags, 整數(shù)型
  .成員 szExeFile, 字節(jié)型, , "256"
.數(shù)據(jù)類型 MIB_IFROW
  .成員 dwInOctets, 整數(shù)型, , , 總共收到(字節(jié))
  .成員 dwOutOctets, 整數(shù)型, , , 總共發(fā)送(字節(jié))

Memory

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

Traffic

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

顯示開機(jī)時(shí)間

.版本 2
.程序集 窗口程序集_窗口1
.子程序 _窗口1_創(chuàng)建完畢
標(biāo)簽3.標(biāo)題 = 取格式化時(shí)間 ()
標(biāo)簽4.標(biāo)題 = 單位
左邊 = _啟動(dòng)窗口.左邊
頂邊 = _啟動(dòng)窗口.頂邊 + 10 + _啟動(dòng)窗口.高度
時(shí)鐘1.時(shí)鐘周期 = 1000 × 10
.子程序 _時(shí)鐘1_周期事件
銷毀 ()

仿360加速懸浮窗

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

運(yùn)行結(jié)果:

易語言如何仿360懸浮窗實(shí)現(xiàn)流量監(jiān)控和內(nèi)存優(yōu)化

關(guān)于“易語言如何仿360懸浮窗實(shí)現(xiàn)流量監(jiān)控和內(nèi)存優(yōu)化”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI