掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
在 Win32 開發(fā)中,如果需要獲取程序運行過程中的一些較為底層的信息,你可能需要使用到 Tool Helper 庫。但我愿意稱之它為 Win32 中的 “害群之馬”。何解?

創(chuàng)新互聯(lián)建站專注于成都網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計、網(wǎng)站制作、網(wǎng)站開發(fā)。公司秉持“客戶至上,用心服務(wù)”的宗旨,從客戶的利益和觀點出發(fā),讓客戶在網(wǎng)絡(luò)營銷中找到自己的駐足之地。尊重和關(guān)懷每一位客戶,用嚴謹?shù)膽B(tài)度對待客戶,用專業(yè)的服務(wù)創(chuàng)造價值,成為客戶值得信賴的朋友,為客戶解除后顧之憂。
Tool Helper 庫在 16 位 Windows 時代就已經(jīng)存在了,這個庫主要用來提供一些調(diào)試服務(wù),例如獲取調(diào)用堆棧和枚舉系統(tǒng)中的所有內(nèi)存等。
Win32 的初始版本中,并沒有包含它,直到 Windows 95 之后,32 位版本的 Tool Helper 程序庫才被引入到 Win32 中。
不管我們對它的評價如何,這些功能仍然存在,所以讓我們試一試看看效果。
運行上面的程序,它會打印系統(tǒng)中所有線程的列表(或至少是你有權(quán)訪問的所有線程)。
代碼的邏輯還是挺簡單的,唯一的微妙之處在于代碼中的一個奇怪的檢查,即 Thread32First 函數(shù)返回的大小足夠大,可以包含我們需要的 th32OwnerProcessID 字段。這種復(fù)雜性是必要的,因為 Thread32First 和 Thread32Next 函數(shù)檢查結(jié)構(gòu)大小的方式有些非正統(tǒng)。
當(dāng)一個 API 被認為是 Win32 API 的一匹害群之馬時,就會發(fā)生上面的這種情況。
一般我們會將應(yīng)用程序的設(shè)置數(shù)據(jù)保存到注冊表,這很方便,但是記得讀取的時候,盡量只讀一次并緩存結(jié)果,而不是每次都從注冊表里讀取,這對運行時性能是有傷害的。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流