if (e_X >= g_tPos.X) and (e_X <= g_tPos.X + g_tSize.Width) and (e_Y >= g_tPos.Y) and (e_Y <= g_tPos.Y + g_tSize.Height) then Page.Redraw(); local tMousePos = System.GetMousePosition(false, nil); local nLeft = e_X - g_nCaptureWidth / 2; -- левая координата приемника local nTop = e_Y - g_nCaptureHeight / 2; -- верхняя координата приемника local nIndX = 1; -- смещение по оси Х в пикселях (например, если есть рамка) local nIndY = 1; -- по оси Y if nLeft < g_tPos.X + nIndX then nLeft = (g_tPos.X + nIndX); end if nTop < (g_tPos.Y + nIndY) then nTop = (g_tPos.Y + nIndY); end local hDeskDC = DLL.CallFunction("user32.dll", "GetDC", "0", DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL); local hDeskApp = DLL.CallFunction("user32.dll", "GetDC", Application.GetWndHandle(), DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL); DLL.CallFunction("gdi32.dll", "StretchBlt", hDeskDC..","..tMousePos.X..","..tMousePos.Y..","..(g_nCaptureWidth * g_nZoom)..",".. (g_nCaptureHeight * g_nZoom)..","..hDeskApp..","..nLeft..",".. nTop..","..g_nCaptureWidth..","..g_nCaptureHeight..",13369376", 0, 1); DLL.CallFunction("user32.dll", "ReleaseDC", hDeskApp, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL); DLL.CallFunction("user32.dll", "ReleaseDC", hDeskDC, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL); bShow = true; else if bShow then Page.Redraw(); bShow = false; end end |