-
Notifications
You must be signed in to change notification settings - Fork 73
/
Copy pathIL_Load-Save.ahk
45 lines (41 loc) · 1.61 KB
/
IL_Load-Save.ahk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
; Link: https://www.autohotkey.com/boards/viewtopic.php?p=191244
; Author: SKAN
; Date:
; for: AHK_L
/*
*/
IL_Save(HIL, File) {
; Originally released by SKAN -> www.autohotkey.com/forum/viewtopic.php?t=72282
Size := 0
If (FileObj := FileOpen(File, "w")) {
DllCall("Ole32.dll\CreateStreamOnHGlobal", "Ptr", 0, "Int", 1, "PtrP", IStream, "UInt")
DllCall("ImageList_Write", "Ptr", HIL, "Ptr", IStream, "UInt")
DllCall("Ole32.dll\GetHGlobalFromStream", "Ptr", IStream, "PtrP", HGlobal, "UInt")
Data := DllCall("GlobalLock", "Ptr", HGlobal )
Size := DllCall("GlobalSize", "Ptr", HGlobal )
Size := FileObj.RawWrite(Data + 0, Size)
FileObj.Close()
DllCall("GlobalUnlock", "Ptr", Data)
ObjRelease(IStream)
DllCall("GlobalFree", "Ptr", HGlobal)
}
Return Size
}
; ================================================================================================================================
IL_Load(File) {
; Originally released by SKAN -> www.autohotkey.com/forum/viewtopic.php?t=72282
HIL := 0
If (FileObj := FileOpen(File, "r")) {
Size := FileObj.Length
HGlobal := DllCall("GlobalAlloc", "UInt", 2, "UInt", Size, "UPtr")
Data := DllCall("GlobalLock", "Ptr", HGlobal, "UPtr")
FileObj.RawRead(Data + 0, Size)
FileObj.Close()
DllCall("GlobalUnlock", "Ptr", Data)
DllCall("Ole32.dll\CreateStreamOnHGlobal", "Ptr", HGlobal, "Int", 1, "PtrP", IStream, "UInt")
HIL := DllCall("ImageList_Read", "Ptr", IStream, "UPtr")
ObjRelease(IStream)
DllCall("GlobalFree", "Ptr", HGlobal)
}
Return HIL
}