Zloy_Gelud
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору livit80 DialogEx.Close(0); после того кода, что я приводил. Может кому будет интересен пример, как добавить свой пункт в системное меню и обрабатывать нажатие на него. Скрин того, что я имею ввиду. Реализация (AMS8 + плагин Memory): Глобальные функции: Код: function WM_SYSCOMMAND(hWnd, uMsg, wParam, lParam) if uMsg == 274 then if Memory.BitAND(wParam, 65535) == '1000' then Dialog.Message("О программе", "Любой текст.\r\n\r\n10x to: PaulIA, UEZ", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1); end end end function QueryAllowProjectClose() Memory.FreeWindowSubClass(1); return true; end | On Startup проекта: изменено (код перенесен в событие On Startup) Код: SysMenu = {}; SysMenu.GetSystemMenu = function(hWnd, bRevert) bRevert = bRevert or false; if bRevert == true then bRevert = 1; else bRevert = 0; end return tonumber(DLL.CallFunction("User32.dll", "GetSystemMenu", hWnd..","..bRevert, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL)); end SysMenu.InsertMenuItem = function(hMenu, nIndex, sText, nCmdID, hSubMenu) local nRes = -1; nCmdID = nCmdID or 0; hSubMenu = hSubMenu or 0; local pMenu = Memory.CreateStructure("int, int, int, int, int, int, int, int, int, int, int, int"); Memory.SetStructureData(pMenu, 1, 0, Memory.Size(pMenu), ""); Memory.SetStructureData(pMenu, 2, 0, Memory.BitOR(0x00000002, 0x00000040, 0x00000004), ""); Memory.SetStructureData(pMenu, 5, 0, nCmdID, ""); Memory.SetStructureData(pMenu, 6, 0, hSubMenu, ""); if sText == "" then Memory.SetStructureData(pMenu, 2, 0, 0x00000100, ""); Memory.SetStructureData(pMenu, 3, 0, 0x00000800, ""); else pText = Memory.Allocate(String.Length(sText) + 1); Memory.PutString(pText, sText, -1, "Ascii"); Memory.SetStructureData(pMenu, 10, 0, pText, ""); end nRes = tonumber(DLL.CallFunction("User32.dll", "InsertMenuItemA", hMenu..","..nIndex..",1,"..pMenu, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL)); if pText then Memory.Free(pText); end Memory.FreeStructure(pMenu); return nRes; end idAbout = 1000; hMenu = SysMenu.GetSystemMenu(Application.GetWndHandle()); SysMenu.InsertMenuItem(hMenu, 5, "", 0); SysMenu.InsertMenuItem(hMenu, 6, "О программе", idAbout); Memory.CreateWindowSubClass(Application.GetWndHandle(), 1, "WM_SYSCOMMAND"); |
|