Zloy_Gelud
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору tRippinthehead Dark_Delphin А такой код позволит еще и иконку нарисовать. Глобальные функции: Код: function _DrawIcon() -- получаем контекст окна проекта local hDC = tonumber(DLL.CallFunction("user32.dll", "GetWindowDC", g_hWnd, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL)); -- рисуем иконку DLL.CallFunction("user32.dll", "DrawIconEx", hDC..",4,7,"..g_hIcon..",16,16,0,0,3", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); -- удаляем контест DLL.CallFunction("user32.dll", "ReleaseDC", g_hWnd..","..hDC, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); end function Callback(hWnd, uMsg, wParam, lParam) if hWnd == g_hWnd then if uMsg == 133 or uMsg == 134 or uMsg == 15 then _DrawIcon(); end end end | On Show страницы: Код: g_hWnd = Application.GetWndHandle(); GWL_STYLE = -16; WS_CAPTION = 0x00C00000; WS_VISIBLE = 0x10000000; NewStyle = WS_CAPTION + WS_VISIBLE; DLL.CallFunction("user32.dll", "SetWindowLongA", g_hWnd..","..GWL_STYLE..","..NewStyle, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); DLL.CallFunction("user32.dll", "DrawMenuBar", g_hWnd, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); -- выделяем 4 байта памяти под дескриптор иконки pIcon = Memory.Allocate(4); -- извлекаем иконку из нашего авторана DLL.CallFunction("shell32.dll", "ExtractIconExA", "\"".._SourceFolder.."\\autorun.exe\",0,0,"..pIcon..',1', DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); -- получаем дескриптор извлеченной иконки g_hIcon = Memory.GetInt(pIcon); -- освобождаем выделенную память Memory.Free(pIcon); -- рисуем иконку _DrawIcon(); -- регистрируем обработку системных сообщений Memory.CreateWindowSubClass(Application.GetWndHandle(), 1, "Callback"); | On Close страницы: Код: Memory.FreeWindowSubClass(1); |
| Всего записей: 3266 | Зарегистр. 30-05-2007 | Отправлено: 00:44 18-04-2011 | Исправлено: Zloy_Gelud, 00:46 18-04-2011 |
|