AhkSetIcons() : Icon updater for AutoHotkey interpreters.

Post your working scripts, libraries and tools for AHK v1.1 and older
User avatar
SKAN
Posts: 1551
Joined: 29 Sep 2013, 16:58

AhkSetIcons() : Icon updater for AutoHotkey interpreters.

27 Jul 2021, 18:41

Sample call: AhkSetIcons("DuglyIconSet.ini", A_AhkPath)

The above will copy executable to Working Directory and then apply icons available in IconSet.
Existing icons (Only numbered and under language id 1033) will be deleted before new icons are applied from set.

Note: Explorer will not depict the changes immediately, in which case, close all Explorer windows,
run once DllCall("Shell32.dll\SHChangeNotify", "Int", 0x8000000, "UInt", 0x0, "Ptr", 0, "Ptr" ,0) which will trigger a icon cache rebuild.
 
 

Sample IconSet: Edit: Improved icon set 01-Aug-2021
 
Image
 

Code: Select all

[Info]
Author=SKAN
Description=Dugly icon set v0.02 for AutoHotkey interpreter executables
Filename=DuglyIconSet.ini
Notes=Icon 10 32x32 4-bit is in .ICO format, rest are .PNG
URL=tiny.cc/ahkseticons
Bytes=10263
[159]
1=iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABsFBMVEUAAACAwP98tO1+uvZ9uPOp1f+l1P9/vPgmes9+vfpvq+l+t/CLv/Sy3P+s1/8wl/1zuf58uPJzt/yBvvyCwf+Mxv+NxP2m0v+m1P2y3P+x2/8ldcgldMam0/////8vjeorf9UwkPApe84kkf0rgtkxlfkwkfMvju0rgdcyl/wuiuctheAxk/Qpeswoecosg9stiOInd8cxk/YuiOQiZakpfdAXbMHX4O0qfdIoeMgXRnUndcMjarHV2d4shNwmcb4Xar4YSnzW2+Idfd6qv90kbLQxlPfX4vElb7ojaa4hY6YhYqQfXZ0eWpdRp/0vlfsjjfYhifAghuwfhOcegeRLktocetg8h9Qbd9Qbdc8bcsnW3ui/x9Mab8SnssBykbkgYKBuhJ9ugpobUYgaToMZTIA0V39EoP719/kgjPns8fhDnPjY5PYtkPTV2N11o9uRsNrK0NiputIbdtImetAVbMQ9eLsdVpEbUIbi6vbC1/SgxPSHtvLg5OiTt+iStueFsOd2peFnn+G1xd2Co86crsebrMQ+fcIjcL88dLJvh6d+jqVeeZpLaI0WQm8TN1zst+L+AAAAHnRSTlMA8PDw8I158P3y7+OxNQT28/Lr4+KysaGhNDT393oemb0dAAAChElEQVQ4y22TZ1vaUBSAb6siy71tGzCEQBOyCMMYTGoVioAsBRS1arVuW1tn997rL/eeG55+wL6f3ufy3pMHyEFAh22g/1oT/QO3OlCDtu6dLt8Vuna62xDQOZT3+Qq3r1Dw+fJDnXA/v1fwY1IhNpTyW4RZlg37C3t5PGO0t0iOQy+fv+U9IT/xF4evDY5NpYq9o8h2UAwDAYqivgQ9IeKHFDVDc2y4eGBDg+xRCOCeUdSaLrPgnnsUtZwIBkJH7CDqK7EEGU/4npQC4CoOnuQEjmVLfchRGiPwONjGt8BlHNyfU9SxsZIDOcpWYOBgKsE0BWUHai8HCAwESYY4TwJNDQTK7ah93kN4ZwXEJew/cqLq8cz/C7jH5BFBDwDTHqw3gpYFDpAhmIiIDMMEg5oVyBy30GIFqiwd48OV5Xg8vk/txrFvZIVGMK2qKv9mn2piOyPwqjoNgSzL7ynCo8m7hFfkcTQvyyTged57vLaCD/9MbG1ubl5ubZBAwB9AUOV5w6vMPsUDfl9EEpjZNWsCDqotqLVqGFJw3MTB5FRGpzHijDXBMIxqK2pdlCSJYeg4Dh7O0hLGS4KMiHURAgZoBAJ41Ao0rBCcBAHBCkRwmgRZBetJK+pZ8gIaBFMRDbwR6FiXepDrP8FH+KHWSeBCbvvpOEaxAgVcOIf/ImdGx0/tbmSr1aMY5QN+y7YiCjhtLlO7GzmTjtZrNjTirNvxd1fOP638ukgoNKB/+/zzMmsK9rpzBC9O5UwUBM2MzM1l0ooAKOlILpvUxbNKG6zecGV1VRF1M5lM65oIaLqZTn+NrVaGO63lddZuxGJ3gFgDrDdrTrjfWH+363oTLreNrP9fzfG5UZOC6ocAAAAASUVORK5CYII=
2=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
3=iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABrVBMVEVoq+5stv9qr/RmpeS84f+94f8AAABms/9foeRpsPhmqOpqsPZprfF/vv18tu1op+aTyf+RxfeSyP6QxPhhsf9op+Zss/pssvpoqeloqOltt/9utv////8fjfz///Mhft0ed9ISbcr///sbhO4bgecVfOQWddMjd88hc8giWZD1+f8qkvsai/sylvr9+vnk7Pgmj/gXiPgxlPYaiPb69/WmzfQljfQXhPSPv/EPgPAvkO/h5evx6+UQddwnf9khfdkYeNkfetYrf9MUcc4edcwWbcQSacINZ8ICU6cASqQeWpYnXZQulv7n7/oOhPm11Pefy/eDvPeAufbY5PTC1/Mbh/P///DP3vCNve8KfO/G1+2GuO0Rfuwniuv38eo1j+kIeOklhufF0+YAcuYuh+QafeETeuA+jN/M096xxt5Rl944itwYetwAa9spfdITctAHa89glc22v8sdc8sreckMaMW5u8CHo78JYbuInrZVg7UGXbUQYLOFm7IAV7KQoLF8k6tujKsMW6tdgadQd6FAbZwyZZorYppIb5kgXJk7Z5YARJMXU5EARo4ANnFV0fNvAAAAHHRSTlPz8vLyJiIA8vL5+fPy5+fin5+cnPLy4+Pj4+LiHnnpwwAAAQdJREFUGNMNz4Niw1AUANC7rKndea9B26i2bcy2bdv2Ny/nDw5IJfpumaxJJGvp0kukgGscZl/EaRZF+no0OBi93sDg+HbY5Rsa3oo5jNA+6p8MWa4YVyyKzg+cbaCwxhcGiDfSPzONHk8DClDZ4kz/WJ0JL0fRM21VAWab3R0h3jPzqRB62bdigK2tTPQiNxIFX1kbBurU+obbcn97+ZAICrlVNUCWvEnM/dXuakuWBrUDAGxmz578JBfTHqJBZQGUhVzenqxTJOchhCKrhE6aOkGEcJyuTKGPcqEDTEWa3zz74fL04dHXBWcCXMtXqr9PpXLp+rvKa3Gxb9DJ5a3NIrnOIJH+A7G7NeJMCQN8AAAAAElFTkSuQmCC
[160]
7=iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAjVBMVEUAAAAAAAAAAAAAAAAAAAAAAADY2NjNzczQ0NC5urm+vb7BwcG2tbbJycmAgIDGxsbc3NytrKzs7Ozk5OTV1NXDw8OwsLD4+Pnp6enT09Ph4eHf39+ysrL19PTy8vLm5uZdXV38/Pzv8O9mZmYgICCYmJiOjo5ramqnp6eIiIidnp5ycnJXV1dISUg8PDyGia7TAAAABXRSTlMAv4CfcMCTpBQAAAFESURBVDjLbZDpdoIwEEal7UgWKBFFUNkUZHHp+z9eJ4HCJKfz997vcsJGnwfufW6s84adueMxz4Mg4Jw7hkc5xxNOw5vwcZ4LIZyveBNeuJSgDUdArLnQPAHb8GgecRKBua9VcHgY+r7Pvj8WIc9JPjKcsRMR1rk0c8MPRFjz0cq3ROBuHvGWCjS/cEUEYeVPE78Qwc0bTgWN7by6nPdEWOdsniOnQoI4tObIKyK4eY2zjAh/eYvHRPCdfKW5JbCZA8e5AI3jGxGWOXDMSzC8JAJy0bw6dYG+HisJMatVSQXcB+OuHc7QB+0uAdbmZVEQAfPiBdDtQWb1PYL2iTy1BNW8t++uAhlr4Q5+kVqCUk0ztGMGCQohlI+f1BLw8VHfP+qsZrcuPzRF/EzSKxHMv5sefyv15/GuVFi5wYZbAvx/WvgFc8Ms7hqq+u8AAAAASUVORK5CYII=
8=iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAkFBMVEUAAAAAAAAAAAAAAAAAAADT0tPOzs6+vr7g4OC7u7vIyMjW1tbd3N3m5ua0tLTz8/PDw8Ps7OyxsbHY2NjBwcHLy8u4uLjFxcW2traurq7a2tr6+vrp6enj4+Pv8O/29varq6vKysqQkJBeXV2Xl5d1dXWKiopZWVlMTEuioqKbnJx/fn9mZmcfHx87OzsdHR0TD2HUAAAABHRSTlMAv5+P9k/X0wAAAgpJREFUSMeFktuWmkAQRYekGAQbtcELg2AUFXQuyf//XaqrO2BXtZmzlm97Hw8FLzYRPM+Pl0Cio82bSVEUC0xVVdttmqZBI/Jw4h2eJsAMJjA+SZLgqojhC8SJt4I0omA98WsIGVF4PuLrFThDChPu5hDvBPjJham+ItwE8dUuy7LTZvMa+UJhYnGvfvePDwnuOpJHXAjyaYknnPiYC3LOIx/HXCD+6ZxYCuxlOTxz9Zg5E4h/Xj+fc0HMofrNyJclE+QcetqJr5kg50z1xCsmCN6vr5UUPNzyU71SMyaE6j2eC951PL62vBT4t4AZ6zEtE57MqUeeC44/Tf2IP/I5E5CXx3/Acy6wObxeCvRpiuOrEW8aIZz+z2smnNh1HD7xQpDzCW8dLgTvOj1UVN9BMvIHJngvq4ctzSGh0cRLgfBikZRK9YBfe9misG5c/2HJBKpf/QGAQakOvgC+4hyF2Q1SfUBeCDTn8368wR23X2v8obA6w10bXAjuOnHVQ4dC2uZwbi5wgw+sDwn0tPEVMB1dxwoAV4svfzGBrvMB19cCutYJGv/hDJnluUAva4DZDIWcrkPCLobfjcGlUCtznU8cNZCgjYD1Hbwbfr9ngv0WumE49ud83ZVaX94O2UUtm3cj7IWAuMn4qWk6PoVwKRAueTsn8A+sXhPu+OA/iPqJpwgBvo0T/gLlh2HLyaw9WgAAAABJRU5ErkJggg==
9=iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAArlBMVEUAAABgYGAAAAB/f39iYmIAAACVlZUAAABoaGiBgYFycnJwcHAyMjIwMDAAAAD///8AAQDg4ODExcTBwcHX19fT09POzs60tLRwcHD8/Pz5+fnm5ubj4+PGxsaurq6sq6yPj497fHt5eXn29vbv8O/t7e3r6+rPz8+ysbKbm5uamZp2dnZra2toaGhMTEw/Pz8wMDASERHz9PTIyMi9vL28vbyIiIiAgIBgYGBISEdSeeGTAAAAD3RSTlMA8oHy8oz9efXy8vLm5gfIB1NVAAAAoUlEQVQY0z3KRxaCQBAA0UEFzN0gOecoyez9L6bMALX8rwghJ4Mb27Y8YR1AGot1nIRzLmOKgMifKdjyWF58jF6kkN01SXPdzIJ6RSFR3UpWtFdhNgxutodeqgwNXBlYqY4PcIZwBtPUsVR8LMFgAFKL3bdHfYINWBGq8EQf6gmgQhs09CCaIUAH1P+xQB4mEAcqhBT2sPSmcAx2a5bQieQHzQAQpfTh4EwAAAAASUVORK5CYII=
10=AAABAAEAICAQAAEABADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/LpcAFk4cgD85tQA9KY0APzOhADEjnQA1KZ8ANzCrACsmpQA/KKkAPz8+QDcmowA/Nq0ANSinADswqQAAAAAIiIiIiIiIiIiIiIgAAAABu7u7u7u7u7u7u7uIAAAAAYz3d3d3d3d3d3d3CAAAAAGMzMzMz3d3d3d3dwgAAAABjMzPT0z3d3d3d3cIAAAAAazPTMzPT3d3d3d3CAAAAAGOzszMzMz3f3d3dwgAAAABjMzMi09PT3SLf3cIAAAAAa7syItM9PTIi3d3CAAAAAGPbMiIzMzMyIt3dwgAAAABrs7IiMzM9MiL93cIAAAAAazvSIjMzPTIi3d3CAAAAAGuzsiI70z0yIjPdwgAAAABruzIiIiszMiIz3cIAAAAAazuyIiIiIiIi893CAAAAAGu7siK9siIiIjPdwgAAAABrO7Iis7MzMiI93cIAAAAAa7syIrO70zIi0z3CAAAAAGu7siLbOzsyItPfwgAAAABru7Iiuzuz0iIzPcIAAAAAa7uyIrs7O7IiM93CAAAAAGu7siu9u7OyIzs9wgAAAABruzu7u7s7vbPTPcIAAAAAa7u7u7u7s7Ozsz3CAAAAAGu7u7s7u72zs6qqwgAAAABru7u7u7u7uz9ERGIAAAAAa7uzu7u7s7O/F3QgAAAAAGu7u7u7u7s7v1HCAAAAAABru7u7u7O7uz3WIAAAAAAAa7u7u7u7u7u9cgAAAAAAAGZmZmZmZmZmZmAAAAAAAAAAAAAAAAAAAAAAAAAAD8AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAA/4AAAf+AAAP/gAAH/4AAD//////w==
[206]
4=iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAn1BMVEUA/wAA/wAA/wAkmSRCuEIAAAAD+wNxiXFpgmlDW0MC+wI1SzU7VDsA/wD///93d3dqampOTk5UVFRvb29iYmJYWFhKSkpGRkY7Ozt+fn5nZ2f7+/t7e3t0dHRAQED5+flzc3NdXV01NTXy8vLi4uLf39/b29u3t7ejo6ODg4NbW1tFRUU4ODj29vbh4eHV1dXJycnAwMC8vLxfX180NDTdxkIpAAAADXRSTlPnqB3BwAD16enp9evpVG2ZTAAAAMdJREFUGNNlz8d2wjAQheGRbAwk0ahYzZKFC72k5/2fLXM47LiLf/HtLiw4A/EYML4A3tRLKTuaHJd1w4HVUvafSlIPStYMYFXKGVUppcduXAGItm0l+nuVagUIpdQJr9QRbVIEKaUvDNbaDi8pEdhfucPhPWPO2lqC6XLAfO57uctxmgicM/shOue+kUpgjNkOkbrHmzEEWuvtcKN+4J/WAmDtA+LsvT+i92sAVoVw+plDCPoYrxUD/lK9bea4ocXXquFP9/8B5q0TO2jfmFEAAAAASUVORK5CYII=
[207]
5=iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAApVBMVEX/AAD/AAD7AgL/AAD/AAAAAABPODiJcXGCaWlbQ0O5RES2QUGbJyeVIiKXIyP/AAD/AAD///9qamp8fHxUVFRGRkZ4eHhzc3Nvb29YWFhPT09KSkp2dnY6Ojr5+flmZmZcXFz9/f1iYmJgYGBBQUE9PT3i4uKCgoJpaWlNTU01NTXz8/Pf39/b29u3t7fw8PDV1dXJycnAwMC8vLykpKShoaE0NDQoiM+SAAAAEHRSTlOoHfXn5gDq6enpwMDAwcAelLPPOAAAAMtJREFUGNM1j8dWhEAQAJsFNqv0MIHJA0jcYPb/P81+Pq1DHepWUD5BXv2RQ1ZCtjnupKsJp3bHTQZwkrJ+ZZJ8m+UJIN8rNeGslKpxUvsCqqZpHNpfM9ZUUDHGvlCQFXYzoxBjfEPRdV2NKUYKfe9GDJcW23bpewop3bCdaunGMKREQWt+DV5r/Y5kCpzzlzCQr+g5p2DMcgneGDPitzEV5AcrEFdr7R2tPRQAZyE+P1YhxHIfxBlo7nE7rP6Z8NsHmiszKP73C9r/AWulFj5Gh+QXAAAAAElFTkSuQmCC
[208]
6=iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAn1BMVEX+/v79/f3///8AAAD6+vr5+fmJiYmCgoJbW1uWlpa5ubm2trabm5tLS0tUVFT////9/f3///93d3dqampOTk5UVFRzc3Nvb29YWFhKSkpGRkZmZmZhYWE8PDz5+fl9fX17e3tcXFxAQEA0NDTi4uKCgoJpaWk4ODjf39++vr63t7ejo6NFRUX29vbz8/Pw8PDb29va2trV1dXJyclfX18bqZHoAAAAEHRSTlPnqB0A9fTp6enBwMDA6+keTviNMgAAAMZJREFUGNNVzzdyAzEQRNEBlp6UhIFbeC64jk5e9z+bplRK2MEPXtbQvDAQ/wPGG+CL3UrKI03a1W7Bge2l7L6UpH5Mcs8A1taOOFlrOxztGkC0bSvR/1WpVoBQSt3wTrWYJkUQY/zGEFM6Yo2RIP3IAcurQCF0SgS1fqIYu04OJddK4Jw5l+ycuyCVwBjzXjL1jLMxBFrrtzJTB+y1FgAbHxB77/0Vvd8AsEMIt0sfQtDXfD8w4Mvt86nPJ9r8tF1yaPjj/V8PoRVXL8yuDgAAAABJRU5ErkJggg==
 
Default IconSet:
 
Image
 

Code: Select all

[Info]
Author=lexikos
Description=Default icon set of AutoHotkey interpreter executables
Filename=DefaultIconSet.ini
Notes=Icon 10 32x32 4-bit is in .ICO format, rest are .PNG
URL=tiny.cc/ahkseticons
Bytes=11049

[159]
1=iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACIlBMVEUMXgwAAAAPYQ8OXw4MXgwMXgwNXg0dbR0MXgwMXgwMXgwMXwwMXQwMXgwMXQwMXQwMXQwMXgwMXQwAAAAocygNXQ2OwY4ibyKBuIEibyIMXgwMXgwMXgwMXgwMXgwMXAwMXQwMXwwNYA3///9dj11zuXNlrWU7iDsvfC8tei11u3VpsWk3hDfY5Nio46hQm1BFkEVBjEE1czUZZhkYYxiIzYiFyYV5v3lnr2cfbh+h4qGLz4twt3BstGwmdCak46RYolhKlUo1gzUzgDMYYBgTXROw4rCr4qud4J2T1pOAxIB8wXxvtW9gqWBcpVxXn1dUnlRTnVNHk0c+ij4odigbahsOWA6Q05BNmE1Ml0wqeSojciMaWhrp9OmX2pd9w313vXdiqmJep14/iz8icSIUYBQRWxHv+O/r9+uZ3JmO0Y6BxoFDjkMlbSUZXBnm8ua9172c1Zya3ZqV2JWQyJCAvYB2tnZbpFtLlks5hDk1gDUsdiwgayAeaB4YVxj5+/nt9e3r8evn8+fg7uDd593V4tXL48vI68jI4Mi+2r6807yz4bOwy7Ck26SVzpWKxIqEvoR5uXlypnJrrmtnrGdPmU9OhU4+iz4kZyQhcCEbaxsZaBkVZRUUYhQNXQ309/Tn7ufj7+PN3M3M5MzK4sq42Li4zbiu1a6r0Kunwqeeu56ZxpmQspCEtYR0n3RysHJsoWxrp2tkk2RhoWFUm1RLi0sfdPPdAAAAI3RSTlPgAPvy3MOT/tW+rSEbuXxqUUgUCf379PTx4KGei4dbNzAsDjlXcIcAAALCSURBVDjLbZP3X1JRGMYPCrh3e9dlCjEEExIIFRwFCogIYiiKmKVU7pWjUtOy3Fvbe6//r+dcKMtP76/f73Pu+773HMLhcHIyjyUlkj2VmMQ/cQYQQio/fqhqsVdosBllOlHQ3lRprnI4i8TrcUdTqJBK9s2VlpYpLpwvb+uqvVqYf+7ipcZcoVEm8m7En+aQHP7BA/ejvLOr4g+34TC7NyE5m2TGH4rxNvC/8iJ8yhWXQfjS6PkKRSDGC3KF8z1GkR2tOP3J5PB3lk8xzFTtb949xjxdolwpTyTcz2z+MsOc/RrjtmmGYb4sg/vkXEJ66ffLWiHkLUW57DkEwZBT2e8qwUaEtH8FK1Q1gBtkukkqdCh9LpUEggH9B2ajAs2j/xes0O9SqaUQbOWdgYrZK1T4gTyd/x4VhsFX6yAY2wIVtTdZQRndT2VUUKmrxW4IMvDCqLCM/OL8+zdjVLilXhUXmyDowPOpcPfbx9eTd8BQVKgWF5f4IYjofh5iD6PjowC7ArgkBCEIfg3CnhJowKV6CHbwhu5d4cmrD89YAdydAKEJvIAKjydm3n1aWfN4rA+ooAU31UCoBG98dBtNrmg9HkvH0KD8BitI60yhTQh9dL8QMKbEpVT6ilTqaVZwm9b1GgjmgkahYe46FaodSi94M3tCiymkr9mC4MB+jT2sMIA83V9UANdsQ3CC62ICmxfLZ1gBXNtCCNcLLurFBifyBtm8vISdwgpusRLCa8cFDQZfMsxbyyDy4JKFVmZ8LQwesXLJERP+X1OfeUHg8Qy0I1+M+X8KOjxWraW+PpxGMuIcQVxwR790WIo8OOb3a6zgkfqRnXSSnax39pkdtH/kYxz90fxImJdCOKfi9T46v6u9+R8eAd+fRR/vybQ4txytgbn9IX3CxqZma7vFGgnv8LI4EPC805PIf4p3PAXwF8tJ9vaUqxERAAAAAElFTkSuQmCC
2=iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAB9VBMVEUMXgwAAAAMXQwNXg0LWwsMXQwMXQwMXgwMXQwPYQ8MXgwMXgwMXgwMXQwAAAAMXgwMXwwMXgwMXQwMXAwMXgw9gj1+tH43fjchbiEMXgwMXgwMXQwAAAD///8MXgwNVw2Gq4ZzunNwt3B6wHpKlko3hTdqs2p9wn0YYhhDj0M9ij2R1JF2vHZkrWQseSwndCeq46qY25hHk0c6iDqDx4NAi0A0gjQfbR+g4aCIzYiGyoZNmU1BjEEdax2N0I2LzosZWxlSnFJosGhUnlQuey6k46Sb3psaaRoZZBmm5Kai46KU15RGkEYaWRoYZxh/xH9nr2dYoVhQm1Cy4rJhqWFbpFswfDAibyKd4J1utG4xfjFgqGBepl4pdymv46+O0Y6CxoJ3vXdjq2NdpV0zgDMrdislciUjcSOu0q5WoFYueC6147VcpVy+376x1rGV2JV4vXgUXBQQWRDI68jB48Gq3KqfxZ+e356awJqEv4RBiUEWVxYVYxUTXxPY59jQ4NDF6MXC1sK63bq22raz17OGvIZ2oHZUnVQ/hz8RXxHL7cvH3Mes5Kyo0aiSupKPxY9+pn57t3tMj0xJgUkZXhkZVRny9vLl7uXS7tK5zrmzyrOjv6Oc0ZybzJuOsI6MwIyAtIB5p3lvm29inGJgkGBRk1E6djpeBITrAAAAHXRSTlPQAPifFvDIu3lzMdeoJwjnj4hkWUTf1dDQrzghBw8AG54AAANLSURBVEjHjdb3UxNBFMDxS6H3YjcvdEggCTW0BKQoqICUEJRiAUJHJYiKdJEmAgL23v9O7/a9vQ1kCOxMfnn7+d7kbrKTkzS4LsTrdNKRS6cLCyeIQVQwHLtiEkUQqoXZvd3pqdzcq5dLSm5eyXuQnX2norK0rPBGZurDnOTk4TV7E0BcNAUhAHtTbW23j/QpGRnNLjtAhJ4FoRC0Mkr+GvPX/Xy1xeJKa4JIJYjSwumT+O6xci0kyEEwnDqR72tvsUOQXgoH59Soj8/z8akH/XCNExKkMPir+lejuX5+emda9VXpoJPOwAr3kwaD4cMhPyTPxl1d6FvTIEQ6C1/49Q3K+nrw+mz2g3x5WpAkSTBF33+RbSat+/hbWzjzkM/XKgG/35e4aewVPuMFzZ6hbwAW0PPhQYPw1fdp5kZvYgH5vEkeCG/hwQh6Bwtk/0R5/jwwCS8C9GYWkM/mgUN41xDNPOgLWEA+e5HfYE4O880WV5caME8B+Qo1EL5PDdCns4B85SMeCN/OAxt6OwvIl/JgHf3u96HNeQMPHEWKx4B8mQh2tsaJ8mAAvZsF5AsxWFp6L6QIFN/vrmUB+bvjQvgFg+itGKDPDBR0oO9hAfljAuZtLCCf+vwQ2/y8uv+NgmL0GJC/h8E7+TP/MenPP6OykniAfpAF5HMw+PRrf8JIq75jmwJnrdUq+2IWkE9epk2vTLOcI/ai/HzTYx6gx4B8yrJ6g6ZW5bzI3sGDOvROFpBXg84Wdh7TZF+kBujrMECvnl+38GYe1KNvYgH5ajUQvuApDwY7FF/PAvLN6nEUPp0HWeizWEBenF/hRYAeA8VnNFt6h3ggfD8PZtFfkoMQ6EXftcI2V40e4Tt/02wOvRLooA9999iCvLcwYfQIX2tdwtkc+kYIluLATL69ZTvptfyzGDGZmLfL3mr7yWZz6GcgUkoEJ/c1VU7lV+Hw9baBDXnmzWK+0Qth0sUgKOK+qtzt8fhev8c20FE8O7dBfgYgStLEA6wxX1OlPM+Ggx6fP/q3ALHK324k1K2dyHshIloJ9DGwYR728QV+/g1+H204vgnogwFs5sB+xgsQcV7DAnzZAJiFwCs2WqMGGn3YOSngCgkNR/kfk7S+suwT42MAAAAASUVORK5CYII=
3=iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABDlBMVEUAAABkpGQxeTEGVQY6gDo3fjf///9Dh0OAvIB4tXhhoWFam1pTlVNOkU5KjUo9gz0qdCpdnV1EikQveC8ibSIaZhoTYBO16bWv46+o3aiXuJeSy5KMxox8uXx0sHRvrm9XmVdQk1BLj0tIi0g7gjs2fTYrbisncSciaiIdaB0KWQrT7tPO3s7L58vA3sC92L287ry41rig16CgwKCb05ua0ZqVzZWOyI6IwoiHwYeEv4R0snRnp2djnWNAh0A7fjsycjIbYBsWYxYVWxUOXA7q8Orf7N/Q69DF4sXD6sO54bm01LSmzqai2KKiwaKezJ6HuoeFrIVyo3JpqGlnpGdjlGNNgk1DfkMnaichZSFmZzHVAAAABnRSTlMAw8PDw6uW0QKGAAAA60lEQVQY0xWI1UICURQAj6DnbjfbHSwsSCkqjYDdrf//I17maWYADjiVj4VElDJtKR/S9gaW7Tydnp1fMMFMqAE3sO469/t+eZxFcx1Uy+7gkPEnDCI/5xTgbecGnz8nDIu45ngFYmd0jCcLhg0Rm7xQgjAa06Gy4SsdQmqAOPZusdu/RspvqrUh9fwe7rlCbGlyAzJ/2sPu29e6ifgnFxvQpkEf3VUmiYiXhW7CMmCH6JI4kejQFRNkNnpAV04kgrgtjR3k0Uf4/rOSSL743hqNCo5EThUJIXmht9oNsw5QU5TSoL4xd1VVh39Ckh5neYnfOQAAAABJRU5ErkJggg==

[160]
7=iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAA2FBMVEUAAABvP19yOFl2eqlcdq1tbJ+Los10jsRyOFlyOVlyOFlyOFl0jsTQ6P3L5fyMmtycotTY7P3N5/3G4/zs9v7J5Pzb7f3z+f7q9P7g8P3d7v3A4Pzo9P7m8/7i8f293/zS6f3w+P7u9/7V6v3D4vzk8v3e7/263fz2+v632/z6/P74+/7U6f3C4Pz9/v+kovyHXny3s8mLYX6lzPRxtfNfpvFfnd+7vNOEXHyDVnSv0/aIw/OnxelkremUu+V3qd/ByN7CuMqqrMisobmhj6qagJuPb4uQbonQAxXuAAAAC3RSTlMAEL/y8vLvyMiPUGYvLOEAAAFuSURBVDjLjY/ZdoJQDEVr5zaiRcChiKIXqzgVce489///qCe3rJpbfTAvZN29c0gO9qv8dv0TxuNxvz/o9SqVVqvtutWH04ucIQBnvN12q9V6/HR0mJMC8AAY3GUe3N0/G0ZextfrQWc6e1wcCyMv44Og05jO5vPFCeX+BDkOXhveoopCkPHgtZvrctku0uYXMr4BzNwQeJzSV3Aep2Ri27aSAscTpRjneKLEVmooBY4noiwenVJhKAXeDs81zW104JYUeHsW9PYshJZVkgJvh+ff7RU6cEPg4/GM+OX7Z8pCqVCQAm+H5+81ZQXuGQIfp2v99bHEB9yRAjgfN3kZYjsLnec5hgCurwfHdujAIymA6+PA8Xd0ThSNpIDjWLA099BFke9LAcerhI9j7q2IRr7flAJ4OEkImLd7WxG4ISi9fcYRD9zsSkFvx9wBRzxw1xTEeMbjWAoYl/HMTWErPjaFs6udtREuz2lnAf0AyU9DpSAT7VkAAAAASUVORK5CYII=
8=iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAABXFBMVEUAAAByRWp0rOJnfLJxOFhseapxbJcAAACOteFdmd9enNufv+V/lNtrn9h5erKZtNtefbR8hrNxRWt3VHeGk7x1hLV0jsR0jsRyOFmGga1uaZVyP1lyOFnO5/10jsTT6f3q9P7K5fzQ6P3s9v7o9P7i8f3g8P3e7/3c7v3m8/7Y7P2IXnz1+v6Mmtzw+P7V6v3I5PycotTa7f3D4fzu9/7k8v3F4vzH4/zy+f7B4PzW6/2/3/y93vzM5vy73fz3+/6EXXz6/P622/y53PyLYHz7/f6GXXykovz9/v7///+Co/aqzvOhy/KJv/Fiqe7H0ea6utCjj6iXf5xus/Jfo+epmLGRcIuNa4mLZIKMYHyCVXN3Q2J0PF28xPzO4vikwfi22PeJqPew1PaSxvN5uvCBn/DP2u2YnuynxenZ2ujN1Oe5y+aVnte3rsSnm7SxnbKflLGjhp2eg51/UG8vQeRGAAAAHHRSTlMA5P7n0UgvBv39/fv7+/n39vbx7ufnyHhQNTUUYt1IgAAAAlZJREFUSMed02dTGlEUxnFRo+m95yJEEWmBxBJAIygqUUApsaf33r//TM65zw677LPBGe8rXvx/zJlz7w4c74z1OaOBYGNjfX1tbXm5XC5nMplCIZvNzs5OTESjny5cuRUIJLd9Br3m2sfqZ66GTgQAT19AL7n0sVeNk5dCI6MEJKde8ljyTWNz8FpohACPjz5Zf/tu8NwQTTUWML7mybnG5pOt7dMXQ7d9IGh8yecm6wK2tk8NXb7TC3gc9JOll69rtdr7s+eHewGPgz4eef5Yz8d7hgCPI318aiqRSExPpwjw+JKjlzxFIGh8zZ1+fp4A8gPz+7MdH33a/PmCPucH6KMHxvx0xxdgdtAzwDirxqx6xheQTqUkz0X8wNmmAnd8C/TvIxEC2I4Fnm0qQD9OANu0wN2mAvQEsE0L3N4Cm4fDBPAYBKQ92weQnoFzWQo0R6+gip4Btp9WgFy22TwUYPvFu36APq5A+w+t9q78NgLCtieAy1Vw+L29/9S2AOjvE8D2BXjOX4FLkktPAI+hC57td360XoxXBSxqns8TwGNIS7vbbjVz2L4C9A/9AJflPh5sf0kAega4LLwFpwdAP+MHnseD3G5TgeTSE0jQ49FtWqD5TJGBvVwBVe2xfAu0LxYJOI9hTwH+XrezJ8D2CwsE8OXuCHD7/C8B6B/5AfpIs2Oqbp//2hFgewL40rvjo7fjoy/5Qfey0CPH+LYnwL3mGEf7FQL9xpGeAPrAcTRfqRDoM47kFQL/60voGfQbv6LnWy+4fuPBUacX3Bw2R56BY55/TKEY7eJF1WcAAAAASUVORK5CYII=
9=iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAkFBMVEUAAAB0jsRyOFlyOFl0jsTs9v7O5/3E4vz7/f7w+P7n8/7i8f2/4Pz////X6/3T6f3S6f3L5fz3+/70+v7f7/3b7f3I5Py73fzp9P622/y3orSvnbOrlaulkaqjkKqgj6qcjaqMaIZ4QmLo9P7U4/WRwvXm6PHY4fBepfCPv+93s+/M0OG4r8WehJ2Rb4t/Tm2GS6jQAAAAA3RSTlMAvr6s6dljAAAAmklEQVQY003L2RaCMAwE0GpMawsUC5RVZXHf///vTM3RY97mZkYIsfjdjFKAJEmWyyzXeDl8IUSN9fU8/wC/cWeiAhiy9ohoulPhGXINbW0i6Lxl0AjrUN/YlAEJotsdtivJUBuYptcTeukYaP7YU713JUOYp1QflGLwfqS5GwcVM1ibSulKFccVA9VlqUJuGKgeclU1DPB/4g24bwrB8/iU6AAAAABJRU5ErkJggg==
10=AAABAAEAICAQAAEABADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/LpcAFk4cgD85tQA9KY0APzOhADEjnQA1KZ8ANzCrACsmpQA/KKkAPz8+QDcmowA/Nq0ANSinADswqQAAAAAIiIiIiIiIiIiIiIgAAAABu7u7u7u7u7u7u7uIAAAAAYz3d3d3d3d3d3d3CAAAAAGMzMzMz3d3d3d3dwgAAAABjMzPT0z3d3d3d3cIAAAAAazPTMzPT3d3d3d3CAAAAAGOzszMzMz3f3d3dwgAAAABjMzMi09PT3SLf3cIAAAAAa7syItM9PTIi3d3CAAAAAGPbMiIzMzMyIt3dwgAAAABrs7IiMzM9MiL93cIAAAAAazvSIjMzPTIi3d3CAAAAAGuzsiI70z0yIjPdwgAAAABruzIiIiszMiIz3cIAAAAAazuyIiIiIiIi893CAAAAAGu7siK9siIiIjPdwgAAAABrO7Iis7MzMiI93cIAAAAAa7syIrO70zIi0z3CAAAAAGu7siLbOzsyItPfwgAAAABru7Iiuzuz0iIzPcIAAAAAa7uyIrs7O7IiM93CAAAAAGu7siu9u7OyIzs9wgAAAABruzu7u7s7vbPTPcIAAAAAa7u7u7u7s7Ozsz3CAAAAAGu7u7s7u72zs6qqwgAAAABru7u7u7u7uz9ERGIAAAAAa7uzu7u7s7O/F3QgAAAAAGu7u7u7u7s7v1HCAAAAAABru7u7u7O7uz3WIAAAAAAAa7u7u7u7u7u9cgAAAAAAAGZmZmZmZmZmZmAAAAAAAAAAAAAAAAAAAAAAAAAAD8AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAA/4AAAf+AAAP/gAAH/4AAD//////w==

[206]
4=iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABCFBMVEUAAABkpGQxeTEGVQY6gDo3fjf///+h2KFdnl1SlVJLj0shbCGo3qiNx41vrW9Zm1k9gz2Sy5J+un5Okk5IjEhEikQtdS0ocigfZx8aZhoTYBPu9u616bWa0ZqEwIR8t3x3tHd0snRop2hlpWVXmVdUl1RBh0E2fDYweDAucC4mcSYmbSYcYRwKWQr6+/rs8uzl8eXU5NS87ryv46+u4q6oz6ib05uVzZWIwoiCvYJyrnJrqmtio2JhoWFhlWFgoWBHgkc7ezs6gjoWYxYOXA71+fXq9ern7ufh6uHM3czA4sC23rasx6ygy6CcwpyYuJiQv5CPwY+Ps4+GroZ7sXttmW1oomgaXxqcRpW0AAAABnRSTlMAw8PDw6uW0QKGAAAA6UlEQVQY003L11bCQBSF4SPoSWbSeyMQSUghiYCKBaRj7/3938RZXPnffXutDbA345WkRwxqWqm6z6wdt05E7uxcurjsHJIGLP5b7ubAt05F7vEGcfjMPLNBYX7AXS/xQnEgEbkwwPlqNccBVUgJhAu1IT69daZKURAqgBFq0viIHa7HPKGWC1ST2vrkY8S2e9NSPTCZo0lMs+UAl2q2Aautv2PwxSc/ARZ57kOqR/IId73+2o4PaiRP4887xNvvynWELazl7hXfU0u3qsq+4NVwYDAbZrrObGa/CdCwnb4guN7G39Z1E/4A4rMejOEMY5sAAAAASUVORK5CYII=

[207]
5=iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABDlBMVEUAAACYCwu+QUF1AACbEBD///+7PT2sJyepJCSUBQWFAACCAADebGy1NDSKAAB7AADZZmbTXl64NzexLCyuKSmkHR2hFhaeFBSRAAB+AAD4w8PkqKj+mZnNj4/icnLXYmLSW1vPWFjJU1PHTEyyMDCmICCjGRmaDw+IAgJ4AADwt7fqr6//oKD3kZHyiorFhITtgYHqfX3oe3vkd3fNVlbLUFDBRESiHx+aFhaOAADz5uby19flxsbjxMTzvb3hsrL5ra3ho6PyoqL4kpLej4/0iorHhobuhITehIS8b2/PbGy3V1eoSEjCR0e9RkaxRUW0PT2XPDy0OTmkJCSWIiKcGxuNEBCMDAyJCQl3AACgvdOZAAAABXRSTlMAw8PDq5Spka0AAADqSURBVBjTFchVYsIAFAXRR+mNC/EEixteitbd3bv/jRDm7wzRDqPrcmKwXGrZTq1yd9C+vL7d25cafhAZNWIG7bPmxdZ3V/N4wZPeHjbR0qSGBnwsGJ7k4aiJzktDC4FfRnYpGU1O0GG0cA78ycaaksm0h85bGD0AhcEqZE67PRydHqJKYFOB2K7Ux7YDQLRskTjJ7+P4/umnqIadi5T6QQs3q0+OBbyc9ygLZi2Ml7LJASrvqmTP4nOMv00uA0pXUcmJn6PHrxWXOa/v/4pQ0i7L6ObSspycVwTBqxPVeHetFIIoeqpa1mkDFc8b4jADegUAAAAASUVORK5CYII=

[208]
6=iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABCFBMVEUAAACYCwu+QUF1AACbEBD///98AACwLCysJyeKAACGAADpfHzebGzAQ0O4ODizMTGpJSWhFxftgoLicnLNVVXITU27PT22NTWnICCfFRWQAACOAACDAACAAAD46uryiorYY2PTXFzRWlrFSkqkHR2VFxeVBgaSBAR5AAD8+fn06en23t7qzMz/oKD+mJj4kpL3kZH0ioruhITkd3fZZ2fVYGDLUVHDR0eqRka9PDyaJyeaDw+LCAj68/P55OTx5OTu3NzkwsLxra3voKDSnZ3+mprbmZnhi4vFiorch4fRh4fCenrSdnbWdHS/bm7NX1/HXl6rW1vEVFS5SEi3OjqzNjaJFxeTCgr4h/q9AAAABXRSTlMAw8PDq5Spka0AAADoSURBVBjTTc3VcsMwEAXQddO1ZJRktmM7ZGqSMgTLzNz+/59U0750n/bcuTMXYCWwQ8YI5VEhYkXaXd/Y3N4xds29/b5HFAj++WBgVWBfbnWc8yPE0a10UEMofYa/d2cFYQKs4xg5TstyikMekjYQx3BHePHwPPhcLgnVgBqueb2GiIdXH4RGOlDX7Pbe7scyO+WFSIFLe77Fy/kQ52KRQtTtPWL+YrP3HL++qwxE3/PHf7M3ap2oEHv+xHo6QTx+VdNEk4E/mdlE6Jmqam1Nb2CVzmxGoyJeVNJZC0CpE/npqaw0TQt+AISNHCudffknAAAAAElFTkSuQmCC
  
 
 
 
The function: Dependencies included.
 

Code: Select all

AhkSetIcons(IniFile, Exe) {              ; v0.1 by SKAN on D47R/D47R @ tiny.cc/ahkseticons
Local
    SrcFile := AhkSetIcons_PathX(Exe).Full
    TrgFile := A_WorkingDir . "\" . AhkSetIcons_PathX(SrcFile).File
    IniFile := AhkSetIcons_PathX(IniFile).Full

    FileCopy, %SrcFile%, %TrgFile%, 1 ; Overwrite
    If ( ErrorLevel )
         Return 0

    AhkSetIcons_DeleteAllIcons(TrgFile)
    hUpdate := DllCall("Kernel32.dll\BeginUpdateResource", "Str",TrgFile, "Int",False)
    
    IniRead, IconGroups, %IniFile%
    Loop, Parse, IconGroups, `n, `r
    {
       If ! ( RT := Format("{:d}", A_LoopField) )
              Continue

       IniRead, Icons, %IniFile%, %RT%

       Count := 0
       If ( StrLen(Icons) )
       {
           StrReplace(Icons, "`n", "`n", Count)
           Count +=1
       }

       If ! ( Count )
              Continue

       nSize := 6 + (14 * Count)
       VarSetCapacity(GROUPICON, nSize, 0)
       NumPut(65536, GROUPICON, 0, "Int")
       NumPut(Count, GROUPICON, 4, "Short")
       pPtr := &GROUPICON + 6

       Count := 0
       Loop, Parse, Icons, `n, `r
       {
             Value    := StrSplit(A_LoopField, "=", A_Space, 2)
             Base64   := Value.2

             Value.1  := Format("{:d}", Value.1)
             If ! ( Value.1 )
                    Continue

             nBytes   := AhkSetIcons_IconData(Base64, ICONDATA)
             If ! ( nBytes )
                    Continue

             DllCall("Kernel32.dll\RtlMoveMemory", "Ptr",pPtr, "Ptr",&ICONDATA+6, "Ptr",14)
             pPtr += 14
             Count += 1
             NumPut(Value.1, pPtr-2, "UShort")
             DllCall("Kernel32.dll\UpdateResource", "Ptr",hUpdate, "Int",3, "Int",Value.1, "Short",1033, "Ptr",&ICONDATA+22, "Int",nBytes-22)
       }

       nSize := 6 + (14 * Count)
       DllCall("Kernel32.dll\UpdateResource", "Ptr",hUpdate, "Int",14, "Int",RT, "Short",1033, "Ptr",&GROUPICON, "Int",nSize)
    }

    DllCall("Kernel32.dll\EndUpdateResource", "Ptr",hUpdate, "Int",False)
}


AhkSetIcons_IconData(Base64, ByRef ICONDATA) {
Local
    VarSetCapacity(Bin,128)
    VarSetCapacity(Bin,0)
    VarSetCapacity(Bin, nBytes := Floor((B64Len := StrLen(Base64 := RTrim(Base64,"=")))*3/4))
    If ! DllCall("Crypt32.dll\CryptStringToBinary"
               , "Str",Base64, "Int",B64Len, "Int",1, "Ptr",&Bin
               , "UIntP",nBytes, "Int",0, "Int",0)
         Return 0

    Hdr := NumGet(Bin, 0, "UInt64")
    If ( Hdr & 0xFFFFFFFFFFFF = 4295032832 )
    {
        VarSetCapacity(ICONDATA, nBytes, 0)
        DllCall("Kernel32.dll\RtlMoveMemory", "Ptr",&ICONDATA, "Ptr",&Bin, "Ptr",nBytes)
        Return nBytes
    }

    If ( Hdr & 0xFFFFFFFF != 0x474E5089 )
         Return 0


    W := NumGet(Bin,16,"UInt")
    W := ( (W & 255)<<24 | (W>>8 & 255)<<16 | (W>>16 & 255)<<8 | W>>24 )
    H := NumGet(Bin,20,"UInt")
    H := ( (H & 255)<<24 | (H>>8 & 255)<<16 | (H>>16 & 255)<<8 | H>>24 )

    ICOFILE := A_WorkingDir . "\ico.tmp"
    hicon := DllCall("User32.dll\CreateIconFromResourceEx"
                   , "Ptr",&Bin, "Int",nBytes, "Int",True
                   , "Int",0x30000, "Int",0, "Int",0, "Int",0, "Ptr")

    If ( hicon = 0 )
         Return  0

    AhkSetIcons_SaveHICONtoFile(hicon, ICOFILE)
    DllCall("User32.dll\DestroyIcon", "Ptr",hicon)

    If ( W>255 && H>255 )
    {
         VarSetCapacity(ICONDATA, nBytes+22, 0)
         FileRead, ICONDATA, *c *m100 %ICOFILE%
         NumPut(nBytes, ICONDATA, 14, "UInt")
         DllCall("Kernel32.dll\RtlMoveMemory", "Ptr",&ICONDATA+22, "Ptr",&BIN, "Ptr",nBytes)
         Return nBytes+22
    }

    FileGetSize, nBytes, %ICOFILE%
    FileRead, ICONDATA, *c %ICOFILE%
    FileDelete, %ICOFILE%
    Return nBytes
}

AhkSetIcons_DeleteAllIcons(P*) {
Local 
Static Data:=""
    If ! ( IsObject(P) )
    {
        RT := NumGet(P+A_PtrSize, "Ptr") + 0
        RN := NumGet(P+(A_PtrSize*2), "Ptr")
        If ( RN <= 0xFFFF )
             Data .= RT . A_Tab . RN . "`n"
        Return 1
    }

    hModule := DllCall("Kernel32.dll\LoadLibraryEx", "Str",P.1, "Ptr",0, "Int",0x02, "Ptr")
    hGlobal := RegisterCallback( A_ThisFunc, "F", 4)
    DllCall("Kernel32.dll\EnumResourceNamesEx", "Ptr",hModule, "Int",14, "Ptr",hGlobal, "Int",0, "Int",0, "Short",1033)
    DllCall("Kernel32.dll\EnumResourceNamesEx", "Ptr",hModule, "Int", 3, "Ptr",hGlobal, "Int",0, "Int",0, "Short",1033)
    DllCall("Kernel32.dll\GlobalFree", "Ptr",hGlobal)
    DllCall("Kernel32.dll\FreeLibrary", "Ptr",hModule)

    List := RTrim(Data, "`n"), Data := ""
    hUpdate := DllCall("Kernel32.dll\BeginUpdateResource", "Str",P.1, "Int",False)
    Loop, Parse, List, `n
       F := StrSplit(A_LoopField, A_Tab)
    ,  DllCall("Kernel32.dll\UpdateResource", "Ptr",hUpdate, "Int",F.1, "Int",F.2, "Short",1033, "Ptr",0, "Int",0)
    DllCall("Kernel32.dll\EndUpdateResource", "Ptr",hUpdate, "Int",False)

Return List
}


AhkSetIcons_PathX(S, P*) {                                ; PathX v0.67 by SKAN on D34U/D35I @ tiny.cc/pathx
Local K,V,N,  U:={},   T:=Format(A_IsUnicode ? "{1:260}" : "{1:520}", ""),   dr:=di:=fn:=ex := T

  For K,V in P
      N := StrSplit(V,":",,2),  K := SubStr(N[1],1,2),  U[K] := N[2]

  DllCall("GetFullPathName", "Str",Trim(S,Chr(34)), "UInt",260, "Str",T, "Ptr",0)
  DllCall("msvcrt\_wsplitpath", "WStr",T, "WStr",dr, "WStr",di, "WStr",fn, "WStr",ex)

Return { "Drive"  : dr := u.dr ? u.dr : dr
       , "Dir"    : di := (u.dp) (u.di="" ? di : u.di) (u.ds)
       , "Fname"  : fn := (u.fp) (u.fn="" ? fn : u.fn) (u.fs)
       , "Ext"    : ex := u._e!="" ? (ex ? ex : u._e) : u.ex="" ? ex : u.ex
       , "Folder" : (dr) (di)
       , "File"   : (fn) (ex)
       , "Full"   : (u.pp) (dr) (di) (fn) (ex) (u.ps) }
}

AhkSetIcons_SaveHICONtoFile(hicon, iconFile) {                      ; By SKAN | 06-Sep-2017 | goo.gl/8NqmgJ
Static CI_FLAGS:=0x2008                                             ; LR_CREATEDIBSECTION | LR_COPYDELETEORG
Local  File, Var, mDC, sizeofRGBQUAD, ICONINFO:=[], BITMAP:=[], BITMAPINFOHEADER:=[]

  File := FileOpen( iconFile,"rw" )
  If ( ! IsObject(File) )
       Return 0
  Else File.Length := 0                                             ; Delete (any existing) file contents

  VarSetCapacity(Var,32,0)                                          ; ICONINFO Structure
  If ! DllCall( "GetIconInfo", "Ptr",hicon, "Ptr",&Var )
    Return ( File.Close() >> 64 )

  ICONINFO.fIcon      := NumGet(Var, 0,"UInt")
  ICONINFO.xHotspot   := NumGet(Var, 4,"UInt")
  ICONINFO.yHotspot   := NumGet(Var, 8,"UInt")
  ICONINFO.hbmMask    := NumGet(Var, A_PtrSize=8 ? 16:12, "UPtr")
  ICONINFO.hbmMask    := DllCall( "CopyImage"                       ; Create a DIBSECTION for hbmMask
                                , "Ptr",ICONINFO.hbmMask
                                , "UInt",0                          ; IMAGE_BITMAP
                                , "Int",0, "Int",0, "UInt",CI_FLAGS, "Ptr" )
  ICONINFO.hbmColor   := NumGet(Var, A_PtrSize=8 ? 24:16, "UPtr")
  ICONINFO.hbmColor   := DllCall( "CopyImage"                       ; Create a DIBSECTION for hbmColor
                                , "Ptr",ICONINFO.hbmColor
                                , "UInt",0                          ; IMAGE_BITMAP
                                , "Int",0, "Int",0, "UInt",CI_FLAGS, "Ptr" )

  VarSetCapacity(Var,A_PtrSize=8 ? 104:84,0)                        ; DIBSECTION of hbmColor
  DllCall( "GetObject", "Ptr",ICONINFO.hbmColor, "Int",A_PtrSize=8 ? 104:84, "Ptr",&Var )

  BITMAP.bmType       := NumGet(Var, 0,"UInt")
  BITMAP.bmWidth      := NumGet(Var, 4,"UInt")
  BITMAP.bmHeight     := NumGet(Var, 8,"UInt")
  BITMAP.bmWidthBytes := NumGet(Var,12,"UInt")
  BITMAP.bmPlanes     := NumGet(Var,16,"UShort")
  BITMAP.bmBitsPixel  := NumGet(Var,18,"UShort")
  BITMAP.bmBits       := NumGet(Var,A_PtrSize=8 ? 24:20,"Ptr")

  BITMAPINFOHEADER.biClrUsed := NumGet(Var,32+(A_PtrSize=8 ? 32:24),"UInt")

  File.WriteUINT(0x00010000)                                        ; ICONDIR.idReserved and ICONDIR.idType
  File.WriteUSHORT(1)                                               ; ICONDIR.idCount (No. of images)
  File.WriteUCHAR(BITMAP.bmWidth  < 256 ? BITMAP.bmWidth  : 0)      ; ICONDIRENTRY.bWidth
  File.WriteUCHAR(BITMAP.bmHeight < 256 ? BITMAP.bmHeight : 0)      ; ICONDIRENTRY.bHeight
  File.WriteUCHAR(BITMAPINFOHEADER.biClrUsed < 256                  ; ICONDIRENTRY.bColorCount
                ? BITMAPINFOHEADER.biClrUsed : 0)
  File.WriteUCHAR(0)                                                ; ICONDIRENTRY.bReserved
  File.WriteUShort(BITMAP.bmPlanes)                                 ; ICONDIRENTRY.wPlanes
  File.WriteUSHORT(BITMAP.bmBitsPixel)                              ; ICONDIRENTRY.wBitCount
  File.WriteUINT(0)                                                 ; ICONDIRENTRY.dwBytesInRes (filled later)
  File.WriteUINT(22)                                                ; ICONDIRENTRY.dwImageOffset


  NumPut( BITMAP.bmHeight*2, Var, 8+(A_PtrSize=8 ? 32:24),"UInt")   ; BITMAPINFOHEADER.biHeight should be
                                                                    ; modified to double the BITMAP.bmHeight

  File.RawWrite( &Var + (A_PtrSize=8 ? 32:24), 40)                  ; Writing BITMAPINFOHEADER (40  bytes)

  If ( BITMAP.bmBitsPixel <= 8 )                                    ; Bitmap uses a Color table!
  {
      mDC := DllCall( "CreateCompatibleDC", "Ptr",0, "Ptr" )
      DllCall( "SaveDC", "Ptr",mDC )
      DllCall( "SelectObject", "Ptr",mDC, "Ptr",ICONINFO.hbmColor )
      sizeofRGBQUAD := ( BITMAPINFOHEADER.biClrUsed * 4 )           ; Colors used x UINT (0x00bbggrr)
      VarSetCapacity( Var,sizeofRGBQUAD,0 )                         ; Array of RGBQUAD structures
      DllCall( "GetDIBColorTable", "Ptr",mDC, "UInt",0, "UInt",BITMAPINFOHEADER.biClrUsed, "Ptr",&Var )
      DllCall( "RestoreDC", "Ptr",mDC, "Int",-1 )
      DllCall( "DeleteDC", "Ptr",mDC )
      File.RawWrite(Var, sizeofRGBQUAD)                             ; Writing Color table
  }

  File.RawWrite(BITMAP.bmBits, BITMAP.bmWidthBytes*BITMAP.bmHeight) ; Writing BITMAP bits (hbmColor)

  VarSetCapacity(Var,A_PtrSize=8 ? 104:84,0)                        ; DIBSECTION of hbmMask
  DllCall( "GetObject", "Ptr",ICONINFO.hbmMask, "Int",A_PtrSize=8 ? 104:84, "Ptr",&Var )

  BITMAP := []
  BITMAP.bmHeight     := NumGet(Var, 8,"UInt")
  BITMAP.bmWidthBytes := NumGet(Var,12,"UInt")
  BITMAP.bmBits       := NumGet(Var,A_PtrSize=8 ? 24:20,"Ptr")

  File.RawWrite(BITMAP.bmBits, BITMAP.bmWidthBytes*BITMAP.bmHeight) ; Writing BITMAP bits (hbmMask)
  File.Seek(14,0)                                                   ; Seeking ICONDIRENTRY.dwBytesInRes
  File.WriteUINT(File.Length()-22)                                  ; Updating ICONDIRENTRY.dwBytesInRes
  File.Close()
  DllCall( "DeleteObject", "Ptr",ICONINFO.hbmMask  )
  DllCall( "DeleteObject", "Ptr",ICONINFO.hbmColor )
Return True
}
My Scripts and Functions: V1  V2
hasantr
Posts: 933
Joined: 05 Apr 2016, 14:18
Location: İstanbul

Re: AhkSetIcons() : Icon updater for AutoHotkey interpreters.

28 Jul 2021, 03:22

Thanks for the effort. Can you explain a little more?
User avatar
SKAN
Posts: 1551
Joined: 29 Sep 2013, 16:58

Re: AhkSetIcons() : Icon updater for AutoHotkey interpreters.

28 Jul 2021, 04:58

Hi @hasantr,

I'm planning/preparing to setup .ah2 file extension for AutoHotkey V2.
My editor PSPad supports both .ahk and .ah2 extensions (Thanks to @toralf).
To avoid confusion, I need to replace the default icon set in V2 executables.
It will be cumbersome to do it every time a new version of of AHK V2 is released and hence I have opted automation.

Current Versions of AutoHotkey exe's have 10 icons in 5 icon groups and can be inspected with a tool like ResHacker
 
image.png
image.png (43.38 KiB) Viewed 2235 times
 
 

For example, if you need to replace the Icon 2 from icon group 159 which is 48x48 pixels,
You first design one and save it as .png, something like this:
 
image.png
image.png (3.05 KiB) Viewed 2235 times
 
You may edit the above icon @ imagefu.com
 
Make the PNG file smaller by using https://tinypng.com/
Convert the PNG file to base64 text (maybe) using https://base64.guru/converter/encode/file
Copy/paste the base64 text into DefaultIconSet.ini in section 159 as value of key 2

Use this function to to apply the edited DefaultIconSet.ini to any Autohotkey.exe.
You may do icons one at a time, the reason why I have provided DefaultIconSet.ini.
Leave Icon #10 as is. It is 4 bit and cannot be done in png format.

:thumbup:
hasantr
Posts: 933
Joined: 05 Apr 2016, 14:18
Location: İstanbul

Re: AhkSetIcons() : Icon updater for AutoHotkey interpreters.

28 Jul 2021, 06:36

This is a great description. Thank you so much. :)
User avatar
SKAN
Posts: 1551
Joined: 29 Sep 2013, 16:58

Re: AhkSetIcons() : Icon updater for AutoHotkey interpreters.

28 Jul 2021, 08:47

I forgot.
If you want to add higher/other resolution versions, just add them under appropriate group using a number greater than 10.
:arrow: Ordinals 1 to 10 are already in use and I suggest not to mess it up.

For example to add a 256x256 version to Main icon (ICON GROUP 159), add it as 11th icon:

Code: Select all

[159]
1=iVBOR...
2=iVBOR...
3=iVBOR...
11=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

 
256x256, 6949 bytes:
Image

Note: Any PNG larger than 255x255 will be added as PNG, while smaller PNG's will be converted to ICO format before adding it to PE file.
User avatar
SKAN
Posts: 1551
Joined: 29 Sep 2013, 16:58

Re: AhkSetIcons() : Icon updater for AutoHotkey interpreters.

31 Jul 2021, 22:20

Dugly iconset has been updated.

You can find a couple of IconSets here: New Icons for V2
User avatar
joedf
Posts: 8940
Joined: 29 Sep 2013, 17:08
Location: Canada
Contact:

Re: AhkSetIcons() : Icon updater for AutoHotkey interpreters.

31 Jul 2021, 23:15

This is pretty neat SKAN! :+1:
Image Image Image Image Image
Windows 10 x64 Professional, Intel i5-8500, NVIDIA GTX 1060 6GB, 2x16GB Kingston FURY Beast - DDR4 3200 MHz | [About Me] | [About the AHK Foundation] | [Courses on AutoHotkey]
[ASPDM - StdLib Distribution] | [Qonsole - Quake-like console emulator] | [LibCon - Autohotkey Console Library]
User avatar
SKAN
Posts: 1551
Joined: 29 Sep 2013, 16:58

Re: AhkSetIcons() : Icon updater for AutoHotkey interpreters.

01 Aug 2021, 08:29

joedf wrote:
31 Jul 2021, 23:15
This is pretty neat SKAN! :+1:
:thumbup: :)
BuggyB
Posts: 44
Joined: 25 Mar 2019, 17:59

Re: AhkSetIcons() : Icon updater for AutoHotkey interpreters.

06 Sep 2022, 12:14

Hi SKAN ,
SKAN wrote:
28 Jul 2021, 04:58
I'm planning/preparing to setup .ah2 file extension for AutoHotkey V2.
My editor PSPad supports both .ahk and .ah2 extensions (Thanks to @toralf).
I'm a PsPad user and I'm planning to start using AHK V2. Do you know if PsPad supports syntax highlighting for V2? And if yes, how?
Thank you

Return to “Scripts and Functions (v1)”

Who is online

Users browsing this forum: No registered users and 114 guests