Автоматический снимок экрана + загрузка скринов на FTP - VB
Формулировка задачи:
Вообщем хочу написать программу выполняющую следующие задачи:
1. Программа автоматически делает скриншот экрана с различным интервалом по нажатию кнопки Start и делает их до тех пор пока не будет нажата кнопка Stop
2. Скриншоты должны быть jpeg формата с качеством 80%
3. Скриншоты сразу отправляются на фтп сервер
Помогите реализовать хотябы 1е и 2е действие для начала, програмированием раньше не занимался поэтому возникают трудности
Из готовых исходников смог сотворить нечто следующее: делается скриншот п нажатию кнопки через заданное время и сохраняется в файл, но он делается только один раз а мне нужно чтобы делалось до тех пор пока не остановят и с интервалом. Код на Visual Basic 6.0
Листинг программы
- Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
- Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
- Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
- Private Declare Function EmptyClipboard Lib "user32" () As Long
- Private Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
- Private Declare Function CloseClipboard Lib "user32" () As Long
- Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
- Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
- Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
- Private Declare Function CreateDC Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData As DEVMODE) As Long
- Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
- Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
- Private Declare Function GetDesktopWindow Lib "user32" () As Long
- Private Const CCHDEVICENAME = 32
- Private Const CCHFORMNAME = 32
- Private Type RECT
- Left As Long
- top As Long
- Right As Long
- Bottom As Long
- End Type
- Private Type DEVMODE
- dmDeviceName As String * CCHDEVICENAME
- dmSpecVersion As Integer
- dmDriverVersion As Integer
- dmSize As Integer
- dmDriverExtra As Integer
- dmFields As Long
- dmOrientation As Integer
- dmPaperSize As Integer
- dmPaperLength As Integer
- dmPaperWidth As Integer
- dmScale As Integer
- dmCopies As Integer
- dmDefaultSource As Integer
- dmPrintQuality As Integer
- dmColor As Integer
- dmDuplex As Integer
- dmYResolution As Integer
- dmTTOption As Integer
- dmCollate As Integer
- dmFormName As String * CCHFORMNAME
- dmUnusedPadding As Integer
- dmBitsPerPel As Integer
- dmPelsWidth As Long
- dmPelsHeight As Long
- dmDisplayFlags As Long
- dmDisplayFrequency As Long
- End Type
- Public Sub Capture(control_hWnd As Long, fNAME As String, Optional OnlyToClipBoard As Boolean = False)
- On Error GoTo ErrorCapture
- Dim sp As RECT, x As Long
- If fNAME <> "" Then
- x = GetWindowRect(control_hWnd, sp)
- ScrnCap sp.Left, sp.top, sp.Right, sp.Bottom
- If OnlyToClipBoard = False Then
- SavePicture Clipboard.GetData, fNAME
- End If
- End If
- Exit Sub
- ErrorCapture:
- MsgBox Err & ":Error in Caputre(). Error Message:" & Err.Description, vbCritical, "Warning"
- Exit Sub
- End Sub
- Private Sub ScrnCap(Lt, top, Rt, Bot)
- On Error GoTo ErrorScrnCap
- Dim rWIDTH As Long, rHEIGHT As Long
- Dim SourceDC As Long, DestDC As Long, bHANDLE As Long, Wnd As Long
- Dim dHANDLE As Long, dm As DEVMODE
- rWIDTH = Rt - Lt
- rHEIGHT = Bot - top
- SourceDC = CreateDC("DISPLAY", 0&, 0&, dm)
- DestDC = CreateCompatibleDC(SourceDC)
- bHANDLE = CreateCompatibleBitmap(SourceDC, rWIDTH, rHEIGHT)
- SelectObject DestDC, bHANDLE
- BitBlt DestDC, 0, 0, rWIDTH, rHEIGHT, SourceDC, Lt, top, &HCC0020
- Wnd = 0
- OpenClipboard Wnd
- EmptyClipboard
- SetClipboardData 2, bHANDLE
- CloseClipboard
- DeleteDC DestDC
- ReleaseDC dHANDLE, SourceDC
- Exit Sub
- ErrorScrnCap:
- MsgBox Err & ":Error in ScrnCap(). Error Message:" & Err.Description, vbCritical, "Warning"
- Exit Sub
- End Sub
- Public Sub CaptureDesktop()
- On Error GoTo ErrorCaptureDesktop
- Dim dhWND As Long, sp As RECT, x As Long
- dhWND = GetDesktopWindow
- If dhWND <> 0 Then
- x = GetWindowRect(dhWND, sp)
- ScrnCap sp.Left, sp.top, sp.Right, sp.Bottom
- End If
- Exit Sub
- ErrorCaptureDesktop:
- MsgBox Err & ":Error in CaptureDesktop. Error Message: " & Err.Description, vbCritical, "Warning"
- Exit Sub
- End Sub
- Private Sub Form_Load()
- Command1.Caption = "Start"
- End Sub
- Private Sub Command1_Click()
- On Error Resume Next
- MsgBox "Через 10 секунд будет сделан снимок экрана"
- Dim EndTime As Date
- EndTime = DateAdd("s", 10, Now)
- Do Until Now > EndTime
- DoEvents
- Loop
- Call CaptureDesktop
- SavePicture Clipboard.GetData, "C:\screens\screenshoot.bmp"
- End Sub
Решение задачи: «Автоматический снимок экрана + загрузка скринов на FTP»
textual
Листинг программы
- Private Sub Timer1_Timer()
- Static intN As Integer
- Call CaptureDesktop
- Picture1.Picture = Clipboard.GetData
- SavePicture Picture1.Picture, "C:/screens/" & intN & ".jpg"
- intN = intN + 1
- If intN > 100 Then Command2_Click = True ' ну или как то так
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д