這篇文章主要介紹易語言枚舉電腦驅(qū)動如何判斷是否存在指定驅(qū)動,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)公司2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站建設(shè)、做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元平?jīng)鲎鼍W(wǎng)站,已為上家服務(wù),為平?jīng)龈鞯仄髽I(yè)和個人服務(wù),聯(lián)系電話:18982081108
DLL命令代碼
.版本 2 .DLL命令 NtQuerySystemInformation, 整數(shù)型, "NTDLL.DLL", "NtQuerySystemInformation" .參數(shù) SystemInformationClass, 整數(shù)型 .參數(shù) pSystemInformation, 整數(shù)型 .參數(shù) SystemInformationLength, 整數(shù)型 .參數(shù) ReturnLength, 整數(shù)型, 傳址 .DLL命令 CopyMemory, , "kernel32", "RtlMoveMemory" .參數(shù) pDst, MODULES, 傳址 .參數(shù) pSrc, 整數(shù)型 .參數(shù) ByteLen, 整數(shù)型 .DLL命令 GlobalSize, 整數(shù)型, "kernel32", "GlobalSize", , 返回全局內(nèi)存塊大小 .參數(shù) hMem, MODULES
自定義數(shù)據(jù)類型表
.版本 2 .數(shù)據(jù)類型 內(nèi)核驅(qū)動成員 .成員 驅(qū)動文件名, 文本型 .數(shù)據(jù)類型 MODULES .成員 dwNumberOfModules, 整數(shù)型 .成員 ModuleInformation, INFORMATION .數(shù)據(jù)類型 INFORMATION .成員 dwReserved, 整數(shù)型, , "2" .成員 dwBase, 整數(shù)型 .成員 dwSize, 整數(shù)型 .成員 dwFlags, 整數(shù)型 .成員 Index, 短整數(shù)型 .成員 Unknown, 短整數(shù)型 .成員 LoadCount, 短整數(shù)型 .成員 ModuleNameOffset, 短整數(shù)型 .成員 ImageName, 字節(jié)型, , "256"
判斷驅(qū)動是否存在的代碼
.版本 2 .支持庫 spec .程序集 窗口程序集1 .子程序 _判斷按鈕_被單擊 .判斷開始 (驅(qū)動是否存在 (“PCHunter64ao.sys”) = 真 或 驅(qū)動是否存在 (“PCHunter32ao.sys”) = 真) 信息框 (“存在”, 64, , ) .默認 信息框 (“不存在”, 16, , ) .判斷結(jié)束 .子程序 驅(qū)動是否存在, 邏輯型, 公開, 取系統(tǒng)已加載的驅(qū)動,成功取到返回真,失敗返回假 .參數(shù) 驅(qū)動名, 文本型 .局部變量 驅(qū)動成員, 內(nèi)核驅(qū)動成員, , "0" .局部變量 循環(huán)計次, 整數(shù)型 枚舉系統(tǒng)驅(qū)動 (驅(qū)動成員) .計次循環(huán)首 (取數(shù)組成員數(shù) (驅(qū)動成員), 循環(huán)計次) .如果真 (驅(qū)動成員 [循環(huán)計次].驅(qū)動文件名 = 驅(qū)動名) 返回 (真) 跳出循環(huán) () .如果真結(jié)束 .計次循環(huán)尾 () 返回 (假) .子程序 枚舉系統(tǒng)驅(qū)動, 整數(shù)型, , 枚舉驅(qū)動,成功返回驅(qū)動數(shù)量,失敗返回0 .參數(shù) 驅(qū)動文件名, 內(nèi)核驅(qū)動成員, 數(shù)組 .局部變量 Ret, 整數(shù)型 .局部變量 ModulesInfo, MODULES .局部變量 i, 整數(shù)型 .局部變量 x, 整數(shù)型 .局部變量 驅(qū)動名稱, 文本型, , "0" .局部變量 位置, 整數(shù)型 .局部變量 判斷函數(shù), 整數(shù)型 .局部變量 裝載類型, 內(nèi)核驅(qū)動成員 .局部變量 內(nèi)存申請, 整數(shù)型 清除數(shù)組 (驅(qū)動名稱) NtQuerySystemInformation (11, 0, 0, Ret) 內(nèi)存申請 = 申請內(nèi)存 (Ret × 2, 真) NtQuerySystemInformation (11, 內(nèi)存申請, Ret × 2, Ret) CopyMemory (ModulesInfo, 內(nèi)存申請, GlobalSize (ModulesInfo)) 加入成員 (驅(qū)動名稱, 到文本 (ModulesInfo.ModuleInformation.ImageName)) i = ModulesInfo.dwNumberOfModules 判斷函數(shù) = i .判斷循環(huán)首 (i > 1) i = i - 1 內(nèi)存申請 = 內(nèi)存申請 + 71 × 4 CopyMemory (ModulesInfo, 內(nèi)存申請, GlobalSize (ModulesInfo)) 加入成員 (驅(qū)動名稱, 到文本 (ModulesInfo.ModuleInformation.ImageName)) .判斷循環(huán)尾 () .計次循環(huán)首 (取數(shù)組成員數(shù) (驅(qū)動名稱), x) 位置 = 倒找文本 (驅(qū)動名稱 [x], “\”, , 假) 裝載類型.驅(qū)動文件名 = 取文本右邊 (驅(qū)動名稱 [x], 取文本長度 (驅(qū)動名稱 [x]) - 位置) 加入成員 (驅(qū)動文件名, 裝載類型) .計次循環(huán)尾 () .如果 (判斷函數(shù) > 1) 返回 (取數(shù)組成員數(shù) (驅(qū)動名稱)) .否則 返回 (0) .如果結(jié)束 釋放內(nèi)存 (內(nèi)存申請)
運行結(jié)果:
以上是“易語言枚舉電腦驅(qū)動如何判斷是否存在指定驅(qū)動”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!