Orion9

|
Posted: Wed Feb 19, 2025 13:47 Post subject: |
|
|
Кто сказал, что у Autorun нет своей иконки в трее?
 Hidden text Code: | SetMessageAction /P 55555 TrayAction
Func TrayAction(hWnd, uMsg, wParam, lParam)
If lParam = 0x0204 Then
AutorunMenu(0)
Elseif lParam = 0x0201 Then
ShowHint(GetState("libs"))
EndIf
EndFunc
TrayIcon()
Func TrayIcon()
Local i = 0, _
f = %COMMANDER_PATH% & "\TOTALCMD.EXE", _
file, hint, _
hIco = 0
#i = 15
#f = GetKnownFolderPath("System") & "\shell32.dll"
file = Buffer(StrLen(f)*2+2)
file.SetStr(f & Chr(0))
hIco = DllCall("shell32\ExtractIconW", "ptr", AUTORUN_TCHANDLE, "ptr", file.Ptr, "uint", i, "ptr")
Free(file)
hint = "Autorun " & FileGetVersion(AUTORUN_PATH & "\Autorun.wdx", "FileVersion")
NotifyIconAdd(1001, 55555, hIco, hint)
If hIco > 0 Then DllCall("DestroyIcon", "ptr", hIco, "bool")
EndFunc
Func NotifyIconAdd(ID, CallbackMessage, hIcon, Tip)
Local NIF_MESSAGE = 0x00000001, _
NIF_ICON = 0x00000002, _
NIF_TIP = 0x00000004, _
TIP_MAXCHAR = 128 - 1
Local buf = Buffer((auPtrSize = 4 ? 956 : 976))
buf.Zero()
buf.SetNum(0, "dword", buf.size, _
"ptr", AUTORUN_TCHANDLE, _
"uint", ID, _
"uint", BitOR(NIF_MESSAGE, NIF_ICON, NIF_TIP), _
"uint", CallbackMessage, _
"ptr", hIcon)
buf.SetStr(StrLeft(Tip, TIP_MAXCHAR) & Chr(0), auPtrSize*2 + 4*4)
Return DllCall("Shell32.dll\Shell_NotifyIconW", "uint", 0, "ptr", buf.ptr, "bool")
EndFunc |
 Hidden text Код функции AutorunMenu в модуле Modules.aucfg на предыдущих страницах
Loopback, нет ли здесь ошибок явных или неявных? А то у меня нет полной уверености. Делал по структуре:
https://learn.microsoft.com/en-us/windows/win32/api/shellapi/ns-shellapi-notifyicondataw
А по поводу объявления: хорошо, что идут такие серьёзные изменения, так как с процентами в переменных действительно какая-то путаница. Только регулярками там скорее всего не обойтись, всё-равно придётся код построчно просматривать. |
|