Да, работает!
#Persistent
#NoTrayIcon
hIcon := LoadPicture("Shell32", "Icon44", IMAGE_ICON := 1)
AddTrayIcon(hIcon, CreateGuid(_))
OnExit("RemoveTrayIcon")
AddTrayIcon(hIcon, pGUID) {
static NIM_ADD := 0x00000000
, flags := ( NIF_MESSAGE := 0x00000001 )
| ( NIF_ICON := 0x00000002 )
| ( NIF_GUID := 0x00000020 )
VarSetCapacity(NOTIFYICONDATA, size := 64, 0)
NumPut(size , NOTIFYICONDATA)
NumPut(A_ScriptHwnd , NOTIFYICONDATA, A_PtrSize)
NumPut(flags , NOTIFYICONDATA, A_PtrSize*2 + 4)
NumPut(nMsg := 0x404, NOTIFYICONDATA, A_PtrSize*2 + 8)
NumPut(hIcon , NOTIFYICONDATA, A_PtrSize*3 + 8)
DllCall("RtlMoveMemory", "Ptr", &NOTIFYICONDATA + size - A_PtrSize - 16, "Ptr", pGUID, "Ptr", 16)
Return DllCall("Shell32\Shell_NotifyIcon", "UInt", NIM_ADD, "Ptr", &NOTIFYICONDATA)
}
RemoveTrayIcon() {
static NIM_DELETE := 0x00000002
VarSetCapacity(NOTIFYICONDATA, size := 16, 0)
NumPut(size , NOTIFYICONDATA)
NumPut(A_ScriptHwnd, NOTIFYICONDATA, A_PtrSize)
DllCall("Shell32\Shell_NotifyIcon", "UInt", NIM_DELETE, "Ptr", &NOTIFYICONDATA)
}
CreateGuid(ByRef GUID) {
VarSetCapacity(GUID, 16, 0)
DllCall("Ole32\CoCreateGuid", "Ptr", &GUID)
Return &GUID
}
Может появиться среди скрытых.
Разработка AHK-скриптов:
e-mail
dfiveg@mail.ruTelegram
jollycoder