Что нового

Скриншот экрана заданной части

SeMgA

Новичок
Сообщения
47
Репутация
0
Добрый день такая проблема:
1 хочу сделать скриншот экрана, скажем координат от 0,0 до 100,100 такой себе квадрат
2 после чего скриншот кладется в папку и название файла 1,2,3,4,5,6,7 итд...
единственное чего я добился
Код:
#include <ScreenCapture.au3>
_ScreenCapture_Capture("'C:\fail\&Random(0000,9999,1).jpg")

и то в папку фаил кладется файл с названием рандом... и все(
помогите пожалуйста реализовать идею
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
SeMgA [?]
хочу сделать скриншот экрана, скажем координат от 0,0 до 100,100 такой себе квадрат
Кликните по функции в Вашем посте и прочитайте справку.
 

Spyhunter

Знающий
Сообщения
56
Репутация
13
Собственно, открыв справку по этой функции всё становится ясно.
А на счёт нумерации можно немного подробнее.. будешь ли ты удалять скрины? И будешь ли закрывать программу?

Код:
#include <ScreenCapture.au3>

_ScreenCapture_Capture("C:\fail\" & Random(0000, 9999, 1) & ".jpg", 0, 0, 100, 100)
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Или

Код:
#include <GDIPlus.au3>
#include <WinAPIEx.au3>
#include <APIConstants.au3>

_GDIPlus_Startup()
For $i = 1 To 10
    $hBitmap = CaptureWindow(_WinAPI_GetDesktopWindow(), 0, 0, 100, 100)
    _GDIPlus_ImageSaveToFile($hBitmap, "C:\fail\" & $i & ".jpg")
    _GDIPlus_BitmapDispose($hBitmap)
Next
_GDIPlus_Shutdown()

Func CaptureWindow($hWnd, $iLeft = 0, $iTop = 0, $iWidth = 0, $iHeight = 0)

    Local $hDC, $hMemDC, $hBitmap, $hMemSv, $hSrcDC, $hSrcSv, $hBmp

    Local $lWidth = _WinAPI_GetWindowWidth($hWnd)
    Local $lHeight = _WinAPI_GetWindowHeight($hWnd)

    If (($iLeft > 0) And ($iWidth = 0)) Then
        $iWidth = ($lWidth - $iLeft)
    EndIf
    If (($iTop > 0) And ($iHeight = 0)) Then
        $iHeight = ($lHeight - $iTop)
    EndIf
    If (($iLeft = 0) And ($iWidth = 0)) Then
        $iWidth = $lWidth
    EndIf
    If (($iTop = 0) And ($iHeight = 0)) Then
        $iHeight = $lHeight
    EndIf

    $hDC = _WinAPI_GetWindowDC($hWnd)
    $hMemDC = _WinAPI_CreateCompatibleDC($hDC)
    $hBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $lWidth, $lHeight)
    $hMemSv = _WinAPI_SelectObject($hMemDC, $hBitmap)
    _WinAPI_PrintWindow($hWnd, $hMemDC)
    _WinAPI_DeleteObject($hBitmap)
    $hSrcDC = _WinAPI_CreateCompatibleDC($hDC)
    $hBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $iWidth, $iHeight)
    $hSrcSv = _WinAPI_SelectObject($hSrcDC, $hBitmap)
    _WinAPI_BitBlt($hSrcDC, 0, 0, $iWidth, $iHeight, $hMemDC, $iLeft, $iTop, $SRCCOPY)
    _WinAPI_SelectObject($hMemDC, $hMemSv)
    _WinAPI_SelectObject($hSrcDC, $hSrcSv)
    _WinAPI_DeleteDC($hMemDC)
    _WinAPI_DeleteDC($hSrcDC)
    _WinAPI_ReleaseDC($hWnd, $hDC)
    $hBmp = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)
    _WinAPI_DeleteObject($hBitmap)

    Return $hBmp
EndFunc
 
Автор
S

SeMgA

Новичок
Сообщения
47
Репутация
0
Огромное спасибо, а скажите пожалуйста как можно допустим вместо чисел рандомных в название писать время и дату, например мм.чч.гг
 

Spyhunter

Знающий
Сообщения
56
Репутация
13
http://autoit-script.ru/autoit3_docs/macros.htm
почитай, там всё это есть
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
SeMgA [?]
а скажите пожалуйста как можно допустим вместо чисел рандомных в название писать время и дату, например мм.чч.гг

Предупреждение За нарушение общих правил (пункт В.4):
Не лепите несколько вопросов разной тематики в один пост. По типу "Ребят, а ещё такой вопрос...". Каждый вопрос в свою тему.


С уважением, ваш Модератор.




Или так можно.
Код:
#include <ScreenCapture.au3>
#include <File.au3>

Global $iNum, $iTimeOut = 60000

HotKeySet('{Esc}', '_Exit')
_MyScreen()
AdlibRegister('_MyScreen', $iTimeOut)

While 1
	Sleep(1000)
WEnd

Func _MyScreen()
	Local $s_Dir = @ScriptDir & '\Screen\', $s_FileName = '_screen.jpg', $i_Left = 0, $i_Top = 0, $i_Right = 300, $i_Bottom = 250, $f_Cursor = False, $a_File

	If Not FileExists($s_Dir) Then DirCreate($s_Dir)
	$a_File = _FileListToArray($s_Dir, '*' & $s_FileName, 1)
	If @error Then
		$iNum = 1
	Else
		$iNum = $a_File[0] + 1
	EndIf
	_ScreenCapture_Capture($s_Dir & $iNum & $s_FileName, $i_Left, $i_Top, $i_Right, $i_Bottom, $f_Cursor)
EndFunc   ;==>_MyScreen

Func _Exit()
	Exit
EndFunc   ;==>_Exit
 
Верх