Перейти к содержимому

Absurd

Пользователи
  • Публикации

    3
  • Зарегистрирован

  • Посещение

Все публикации пользователя Absurd

  1. Попалась на глаза статья о поиске решения задачи по снятию и сохранению в папку с картинками скриншота желаемого размера в заданной области координат. Очевидно, что моё решение запоздало, но вдруг пригодится, сэкономит кому то время. Использую данный метод в своих AHK-скриптах. На диске С: создаю папочку "screens" В шапке прописываю: file = C:\screens\file.bmp И ниже функцию: screen(x,y,w,h, OutputFilePath, hwnd="") { hwnd := (hwnd="") ? WinExist("A") : hwnd pBitmap := Gdip_BitmapFromScreen(0,raster) if (pBitmap < 1) pToken := Gdip_StartUp(), pBitmap := Gdip_BitmapFromScreen(0,raster) pBitmap2 := Gdip_CreateBitmap(w, h) G2 := Gdip_GraphicsFromImage(pBitmap2), Gdip_SetSmoothingMode(G2, 4), Gdip_SetInterpolationMode(G2, 7) Gdip_DrawImage(G2, pBitmap, 0, 0, w, h, x, y, w, h) Gdip_SaveBitmapToFile(pBitmap2, OutputFilePath) Gdip_DeleteGraphics(G2), Gdip_DisposeImage(pBitmap), Gdip_DisposeImage(pBitmap2) if (pToken != "") Gdip_ShutDown(pToken) } и далее, когда мне где то в петле, нужен скриншот, чтобы с ним работать, я вызываю функцию: screen(780, 567, 25, 16, file, EVE - Negociant) ; где первая пара - 780, 657 -это левая верхняя точка области снятия скриншота, вторая пара - 25, 16 - размер области в пикселях, file - произвольное название скриншота, а далее название активного окна, в моем случае, это окно Eve online. После вызова функции даю паузу секунды полторы на выполнение. Пауза тоже непростая, поскольку использую пару таймеров, потому во избежание багов использую такую функцию: my_sleep(a:=0, b:=0) { Random, pz, a, b end_timer := A_TickCount + pz while ( A_TickCount <= end_timer ) { Sleep, 10 } Return } потом повсюду в теле скрипта пишу, например : my_sleep(1000, 1500)
×
×
  • Создать...