EnumResourceTypes

EnumResourceTypes是一個計算機函式,功能是為資源搜尋模組傳遞給用戶定義。

基本介紹

  • 中文名:EnumResourceTypes
  • 性質:函式
  • 函式功能:為資源搜尋模組傳遞給用戶定義
  • 函式原型:BOOL EnumResourceTypes
API說明,AAuto範例 枚舉DLL中的資源類型,

API說明

函式功能:該函式為資源搜尋模組並且將它找到的每個資源類型傳遞給用戶定義的回調函式
函式原型:BOOL EnumResourceTypes(HMODULE hModule,ENUMRESTYPEPROC lpEnumFunc,LONG IParam);
參數:
hModule:處理包含被列舉資源類型的執行檔的模組。如果這個參數為NULL,那么函式將在模組中列舉出創建當前過程的資源類型。
lpEnumFunc:指向所需要每個列舉出的資源類型的回響函式。如要了解更多的信息請參見
EnumResTypeProc。
IParam:指定申請定義值傳遞給回響函式。
返回值:若函式運行成功,則返回非零值;若函式運行失敗,則返回零值。若想獲得更多的錯誤信息,請調用GetLastError函式。
注意:函式將連續列舉出資源名稱,直到回響函式返回False值或全部的資源名稱均被列舉完畢。
速查:Windows NT 3.1、Windows 95以上,頭檔案:winbase.h;庫檔案:kernel32.lib;Unicode:在Windows和Windows NT上實現為Unicode和ANSI兩種版本。

AAuto範例 枚舉DLL中的資源類型

//導入檔案操作函式館
import fsys;
//載入DLL
dll = raw.loadDll(fsys.getExeDir()+"lib\labs\au3\.dll")
hModule = dll.gethandle() //這樣可以得到模組句柄
//聲明枚舉資源類型API
EnumResourceTypes= ::Kernel32.api("EnumResourceTypes","int( pointer hModule,pointer lpEnumFunc,int lParam)");
EnumResTypeProc=function(hModue,lpszType,lParam){
//該類型是一個字元串嗎?
if( lpszType >>> 16 /* not IS_INTRESOURCE*/) { //Otherwise, it is a pointer to a null-terminated string
//是字元串
//將數值用topointer轉換為指針,再用raw.tostring轉換為字元串
lpszType = raw.tostring(topointer(lpszType) )
//如果他的第一個位元組碼是#號
if(lpszType[1]=='#'#){//If the first character of the string is a pound sign (#
//那面後面是一個數值
lpszType = tonumber( //then the remaining characters represent a decimal number that specifies the integer identifier of the resource type
string.sub(lpszType,2) //For example, the string "#258" represents the identifier 258.
)
}
}
else{ //IS_INTRESOURCE(lpszType) is TRUE, then lpszType specifies the integer identifier of the given resource type
//否則是int
}
io.print(lpszType);
return 1;
}
//將AAuto函式轉換為回調函式指針
pEnumwndProc = raw.tostdcall(EnumResTypeProc,"int(pointer hModule,int lpszType,int lParam)");
//打開控制台
io.open()
//列出資源類型
EnumResourceTypes(hModule,pEnumwndProc,0)

相關詞條

熱門詞條

聯絡我們