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

PengueeBot. Снимок скриншота в указанной области координат

Рекомендуемые сообщения

Попалась на глаза статья о поиске решения задачи по снятию и сохранению в папку с картинками скриншота желаемого размера в заданной области координат. Очевидно, что моё решение запоздало, но вдруг пригодится, сэкономит кому то время. Использую данный метод в своих 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)

 

Изменено пользователем Alex

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...