Автоматический снимок экрана + загрузка скринов на FTP - VB

Узнай цену своей работы

Формулировка задачи:

Вообщем хочу написать программу выполняющую следующие задачи: 1. Программа автоматически делает скриншот экрана с различным интервалом по нажатию кнопки Start и делает их до тех пор пока не будет нажата кнопка Stop 2. Скриншоты должны быть jpeg формата с качеством 80% 3. Скриншоты сразу отправляются на фтп сервер Помогите реализовать хотябы 1е и 2е действие для начала, програмированием раньше не занимался поэтому возникают трудности Из готовых исходников смог сотворить нечто следующее: делается скриншот п нажатию кнопки через заданное время и сохраняется в файл, но он делается только один раз а мне нужно чтобы делалось до тех пор пока не остановят и с интервалом. Код на Visual Basic 6.0
Листинг программы
  1. Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
  2. Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
  3. Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
  4. Private Declare Function EmptyClipboard Lib "user32" () As Long
  5. Private Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
  6. Private Declare Function CloseClipboard Lib "user32" () As Long
  7. Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
  8. Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
  9. 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
  10. 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
  11. Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
  12. Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
  13. Private Declare Function GetDesktopWindow Lib "user32" () As Long
  14. Private Const CCHDEVICENAME = 32
  15. Private Const CCHFORMNAME = 32
  16. Private Type RECT
  17. Left As Long
  18. top As Long
  19. Right As Long
  20. Bottom As Long
  21. End Type
  22. Private Type DEVMODE
  23. dmDeviceName As String * CCHDEVICENAME
  24. dmSpecVersion As Integer
  25. dmDriverVersion As Integer
  26. dmSize As Integer
  27. dmDriverExtra As Integer
  28. dmFields As Long
  29. dmOrientation As Integer
  30. dmPaperSize As Integer
  31. dmPaperLength As Integer
  32. dmPaperWidth As Integer
  33. dmScale As Integer
  34. dmCopies As Integer
  35. dmDefaultSource As Integer
  36. dmPrintQuality As Integer
  37. dmColor As Integer
  38. dmDuplex As Integer
  39. dmYResolution As Integer
  40. dmTTOption As Integer
  41. dmCollate As Integer
  42. dmFormName As String * CCHFORMNAME
  43. dmUnusedPadding As Integer
  44. dmBitsPerPel As Integer
  45. dmPelsWidth As Long
  46. dmPelsHeight As Long
  47. dmDisplayFlags As Long
  48. dmDisplayFrequency As Long
  49. End Type
  50. Public Sub Capture(control_hWnd As Long, fNAME As String, Optional OnlyToClipBoard As Boolean = False)
  51. On Error GoTo ErrorCapture
  52. Dim sp As RECT, x As Long
  53. If fNAME <> "" Then
  54. x = GetWindowRect(control_hWnd, sp)
  55. ScrnCap sp.Left, sp.top, sp.Right, sp.Bottom
  56. If OnlyToClipBoard = False Then
  57. SavePicture Clipboard.GetData, fNAME
  58. End If
  59. End If
  60. Exit Sub
  61. ErrorCapture:
  62. MsgBox Err & ":Error in Caputre(). Error Message:" & Err.Description, vbCritical, "Warning"
  63. Exit Sub
  64. End Sub
  65. Private Sub ScrnCap(Lt, top, Rt, Bot)
  66. On Error GoTo ErrorScrnCap
  67. Dim rWIDTH As Long, rHEIGHT As Long
  68. Dim SourceDC As Long, DestDC As Long, bHANDLE As Long, Wnd As Long
  69. Dim dHANDLE As Long, dm As DEVMODE
  70. rWIDTH = Rt - Lt
  71. rHEIGHT = Bot - top
  72. SourceDC = CreateDC("DISPLAY", 0&, 0&, dm)
  73. DestDC = CreateCompatibleDC(SourceDC)
  74. bHANDLE = CreateCompatibleBitmap(SourceDC, rWIDTH, rHEIGHT)
  75. SelectObject DestDC, bHANDLE
  76. BitBlt DestDC, 0, 0, rWIDTH, rHEIGHT, SourceDC, Lt, top, &HCC0020
  77. Wnd = 0
  78. OpenClipboard Wnd
  79. EmptyClipboard
  80. SetClipboardData 2, bHANDLE
  81. CloseClipboard
  82. DeleteDC DestDC
  83. ReleaseDC dHANDLE, SourceDC
  84. Exit Sub
  85. ErrorScrnCap:
  86. MsgBox Err & ":Error in ScrnCap(). Error Message:" & Err.Description, vbCritical, "Warning"
  87. Exit Sub
  88. End Sub
  89. Public Sub CaptureDesktop()
  90. On Error GoTo ErrorCaptureDesktop
  91. Dim dhWND As Long, sp As RECT, x As Long
  92. dhWND = GetDesktopWindow
  93. If dhWND <> 0 Then
  94. x = GetWindowRect(dhWND, sp)
  95. ScrnCap sp.Left, sp.top, sp.Right, sp.Bottom
  96. End If
  97. Exit Sub
  98. ErrorCaptureDesktop:
  99. MsgBox Err & ":Error in CaptureDesktop. Error Message: " & Err.Description, vbCritical, "Warning"
  100. Exit Sub
  101. End Sub
  102. Private Sub Form_Load()
  103. Command1.Caption = "Start"
  104. End Sub
  105. Private Sub Command1_Click()
  106. On Error Resume Next
  107. MsgBox "Через 10 секунд будет сделан снимок экрана"
  108. Dim EndTime As Date
  109. EndTime = DateAdd("s", 10, Now)
  110. Do Until Now > EndTime
  111. DoEvents
  112. Loop
  113. Call CaptureDesktop
  114. SavePicture Clipboard.GetData, "C:\screens\screenshoot.bmp"
  115. End Sub

Решение задачи: «Автоматический снимок экрана + загрузка скринов на FTP»

textual
Листинг программы
  1. Private Sub Timer1_Timer()
  2. Static intN As Integer
  3. Call CaptureDesktop
  4. Picture1.Picture = Clipboard.GetData
  5. SavePicture Picture1.Picture, "C:/screens/" & intN & ".jpg"
  6. intN = intN + 1
  7. If intN > 100 Then Command2_Click = True ' ну или как то так
  8. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.571 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы