forked from Ixiko/AHK-libs-and-classes-collection
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathResourceIndexToId.ahk
23 lines (23 loc) · 910 Bytes
/
ResourceIndexToId.ahk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
ResourceIndexToId(aModule, aType, aIndex){
static enum_data,ResourceIndexToIdEnumProc,RT_GROUP_ICON
if !RT_GROUP_ICON
enum_data:=Struct("find_index,index,result") ;ResourceIndexToIdEnumData
,ResourceIndexToIdEnumProc:=RegisterCallback("ResourceIndexToIdEnumProc","",4),RT_GROUP_ICON := 3 + 11
enum_data.find_index := aIndex
enum_data.index := 0
enum_data.result := -1 ; Return value of -1 indicates failure, since ID 0 may be valid.
DllCall("EnumResourceNames","PTR",aModule,"PTR", aType,"PTR", ResourceIndexToIdEnumProc, "PTR", enum_data[])
return enum_data.result
}
ResourceIndexToIdEnumProc(hModule, lpszType, lpszName, lParam){
static enum_data
if !enum_data
enum_data:=Struct("find_index,index,result") ;ResourceIndexToIdEnumData
enum_data[] := lParam
if (++enum_data.index = enum_data.find_index)
{
enum_data.result := lpszName
return FALSE ; Stop
}
return TRUE ; Continue
}