--lua
package.path = "LuaPlugins\\winapi\\?.lua;" .. package.path
package.path = "LuaPlugins\\glue\\?.lua;" .. package.path
setfenv(1, require'winapi')
local ffi = require("ffi")
ffi.cdef[[
int GetDC(int hWnd);
BOOL StretchBlt(int hdcDest, int xDest, int yDest, int wDest, int hDest, int hdcSrc, int xSrc, int ySrc, int wSrc, int hSrc, DWORD rop);
]]
local SRCCOPY = 13369376
function visualwindow(hdcDest, xDest, yDest, wDest, hDest, hdcSrc, xSrc, ySrc, percent)
local wSrc = math.floor((wDest - xDest) * percent / 100)
local hSrc = math.floor((hDest - yDest) * percent / 100)
C.StretchBlt(hdcDest, xSrc, ySrc, wSrc, hSrc, hdcSrc, xDest, yDest, wDest - xDest, hDest - yDest, SRCCOPY)
end
local handle = findwindow ("Блокнот") -- окно, с которого нужно отобразить на экране часть изображения
-- может быть перекрыто (но, не свёрнуто) или быть на другом рабочем столе
if handle then -- если окно найдено
local HDC = C.GetDC(0)
local DC = C.GetDC(handle[1][1])
while true do
visualwindow(HDC, 0, 0, 300, 250, DC, 100, 400, 100)
-- 0, 0, 300, 250 - относительные координаты, с которых будет получено изображение
-- 100, 400 - абсолютные координаты вывода изображения на экран
-- 100 - масштаб вывода в процентах (изображение будет сжато или растянуто если не 100%)
wait(10)
end
else
log ("Окно не найдено")
end