tavria2

Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Zloy_Gelud Цитата: Проблема в том, что я почти всегда получаю результат "-1" | Этот код нужно крутить в таймере. Замечания: Ф-ция WindowFromPoint не годится для твоего случая, т.к. она возвращает handle для окна расположенного под курсором мышки, а как известно не все объекты имеют handle, поэтому в некоторых местах ты не сможешь получить цвет (IMHO). Так же будут грабли с окнами которые не развернуты на весь экран, т.к. для получения цвета используются оконные координаты, а мы используем экранные. Оконные координаты - мы можем получить только для своего окна проекта. Предлагаю использовать handle и DC - "Рабочего стола", т.к. это окно всегда имеет экранные координаты, а все окна в системе являются его потомками. Событие On Timer: Код: local X = System.GetMousePosition(false).X; -- экранная позиция мышки X local Y = System.GetMousePosition(false).Y; -- экранная позиция мышки Y -- Определяем дескриптор Рабочего стола hWnd = DLL.CallFunction("user32.dll", "GetDesktopWindow", "", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); -- если получили дескриптор окна if (hWnd ~= "0") then -- получаем контекст устройства (DC) окна, имеющего дескриптор hDC = DLL.CallFunction("user32.dll", "GetWindowDC", hWnd, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); -- если получили контекст if (hDC ~= "0") then -- получаем значение RGB пиксела в заданный координатах в контексте устройства sRGB = DLL.CallFunction("gdi32.dll", "GetPixel", hDC..","..X..","..Y, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); -- если точка лежит в области выpезания if (sRGB ~= "-1") then -- отображаем RGB пиксела Input.SetText("Input1", sRGB); end end -- возвращаем контекст устройства системе DLL.CallFunction("user32.dll", "ReleaseDC", hWnd..","..hDC, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); end | Таймер можешь запустить из любого места: Page.StartTimer(10); | Всего записей: 1127 | Зарегистр. 19-01-2005 | Отправлено: 01:48 07-01-2008 | Исправлено: tavria2, 01:54 07-01-2008 |
|