Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - создание скриншота и его моментальная отправка на почтовый ящик

Ответить
Настройки темы
CMD/BAT - создание скриншота и его моментальная отправка на почтовый ящик

Старожил


Сообщения: 292
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Подскажите, как создать .bat (не PowerShell скрипт!!! на моей системе его нет)
чтобы он делал скриншоты когда сработает планировщик задач и отправлял их на почту. (моя почта@моя почту.ру)
т.е. батник будет запускаться через планировщик задач . Время в планировщике наступило и он заскриншотил и отправил мне на почту
Все решения что нашел в инете или платные или не рабочие.

Отправлено: 16:43, 30-08-2019

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


v79italya, я даже уже и не знаю…

Давайте попробуем заменить в начале:
Код: Выделить весь код
[Reflection.Assembly]::LoadWithPartialName('System.Drawing') | Out-Null
[Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') | Out-Null
на:
Код: Выделить весь код
Add-Type -AssemblyName 'System.Drawing'
Add-Type -AssemblyName 'System.Windows.Forms'
А так-то идей нет.

Отправлено: 17:01, 08-10-2019 | #41



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Старожил


Сообщения: 235
Благодарности: 8

Профиль | Отправить PM | Цитировать


Iska, Вы не парьтесь много. Помощь - дело добровольное. Если в итоге ничего не получится - я не расстроюсь.
Можно попробовать по другому: скриншоты я как нибудь сделаю сторонними программами. А возможно отправлять на почту вложение из папки? то вложение, у которого дата создания или дата изменения были позже всех.

Отправлено: 18:20, 08-10-2019 | #42


Старожил


Сообщения: 235
Благодарности: 8

Профиль | Отправить PM | Цитировать


Iska, во первых, спасибо за код и за то что нашли причину.
смотрите. попробовал с этими строками:
HTML код: Выделить весь код
Add-Type -AssemblyName 'System.Drawing' Add-Type -AssemblyName 'System.Windows.Forms'

все отработало правильно. Потом попробовал с этими строками:
HTML код: Выделить весь код
[Reflection.Assembly]::LoadWithPartialName('System.Drawing') | Out-Null [Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') | Out-Null

тоже все отработало правильно. только в коде из сообщения 13 только одна строка
HTML код: Выделить весь код
[Reflection.Assembly]::LoadWithPartialName('System.Drawing') | Out-Null

. Наверное поэтому и не работало.
Только сейчас тоже есть проблема. Возможно ли запускать скрипт в фоне или в трее? Иначе черное окошко PShell(как cmd) виднеется на скриншоте.

Отправлено: 18:42, 08-10-2019 | #43


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


В общем — не знаю. У меня работает и с [Reflection.Assembly]::LoadWithPartialName() и с Add-Type. Почему у Вас местами не работало с одним из них — нужно ждать мнения коллег-специалистов, коим я не являюсь.

Цитата v79italya:
Возможно ли запускать скрипт в фоне или в трее? »
В трее вообще ничего нельзя «запустить». В принципе.

Создайте задание в Планировщике заданий. На вкладке «Действия» создайте действие «Запуск программы». В группе «Параметры» в поле «Программа или сценарий» укажите:
Код: Выделить весь код
"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe"
В поле «Добавить аргументы (необязательно)» укажите:
Код: Выделить весь код
-NoLogo -WindowStyle Hidden -ExecutionPolicy RemoteSigned -File "C:\Мои проекты\0279\0001.ps1"
где вместо выделенного укажите путь к Вашему файлу.

Настройте расписание на вкладке триггеры — начало выполнения задания, повтор и продолжительность.

Окно консоли PowerShell всё равно будет появляться (потому что, как я понял, сначала создаётся окно консоли, а затем уже, в процессе выполнения, к нему применяется сокрытие), но на скриншотах его не будет (если всё равно будет — попробуйте немного увеличить паузу в:
Код: Выделить весь код
Start-Sleep -Milliseconds 250
). Если Вам надо радикально — чтобы вообще даже не светилось окно в принципе, то можно будет ещё поиграться.

Отправлено: 19:22, 08-10-2019 | #44


Старожил


Сообщения: 235
Благодарности: 8

Профиль | Отправить PM | Цитировать


Iska, ok. Сделаю как советуете. Спасибо Вам большое!

Отправлено: 19:29, 08-10-2019 | #45


Старожил


Сообщения: 235
Благодарности: 8

Профиль | Отправить PM | Цитировать


Цитата Iska:
Почему у Вас местами не работало с одним из них »
не работал в таком виде:
HTML код: Выделить весь код
[Reflection.Assembly]::LoadWithPartialName('System.Drawing') | Out-Null Start-Sleep -Milliseconds 250 $oRectangle = ([System.Windows.Forms.Screen]::AllScreens)[0].Bounds $oBitmap = [System.Drawing.Bitmap]::new($oRectangle.Width, $oRectangle.Height) $oGraphics = [System.Drawing.Graphics]::FromImage($oBitmap)

если же первую строку заменить на две строки любого из двух предложенных Вами вариантов:
HTML код: Выделить весь код
[Reflection.Assembly]::LoadWithPartialName('System.Drawing') | Out-Null [Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') | Out-Null Add-Type -AssemblyName 'System.Drawing' Add-Type -AssemblyName 'System.Windows.Forms'

то все работает. Может, причина не в этом

Отправлено: 20:57, 08-10-2019 | #46


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата v79italya:
сли же первую строку заменить на две строки любого из двух предложенных Вами вариантов … то все работает. »
А… То бишь, Вы изначально просто не дочитали всю тему до конца. Ясно, разобрались.

Отправлено: 21:07, 08-10-2019 | #47


Старожил


Сообщения: 235
Благодарности: 8

Профиль | Отправить PM | Цитировать


Цитата Iska:
изначально просто не дочитали всю тему до конца »
моя вина) Не вчитался в сообщение #23. Прошу извинить за то что помучил

Отправлено: 21:17, 08-10-2019 | #48


Пользователь


Сообщения: 67
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
nircmd.exe savescreenshot "scr~$currdate.MM_dd_yyyy$-~$currtime.HH_mm_ss$.png" »
А не подскажете, как в команде скрину увеличить размер, чтоб качество и чёткость лучше было?

Отправлено: 21:14, 10-05-2023 | #49


Аватара для rafka

Пользователь


Сообщения: 83
Благодарности: 2

Профиль | Отправить PM | Цитировать


прочёл выше сказанное и создал screen.ps1


Код: Выделить весь код
[Reflection.Assembly]::LoadWithPartialName('System.Drawing') | Out-Null
[Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') | Out-Null


Add-Type -AssemblyName 'System.Drawing'
Add-Type -AssemblyName 'System.Windows.Forms'
$oGraphics.CopyFromScreen($oRectangle.Location, [System.Drawing.Point]::Empty, $oRectangle.Size)
$oMemoryStream = [System.IO.MemoryStream]::new()
$oBitmap.Save($oMemoryStream, [System.Drawing.Imaging.ImageFormat]::Png)
$oBitmap.Save('C:\abcabc\0001.png')
$oMemoryStream.Seek(0, [System.IO.SeekOrigin]::Begin) | Out-Null

$oMailMessage = New-Object -TypeName 'Net.Mail.MailMessage'
$oMailMessage.From = 'from@mail.com'
$oMailMessage.To.Add('to@mail.com') 
$oMailMessage.SubjectEncoding = [System.Text.Encoding]::Unicode 
$oMailMessage.Subject = "Screenshot at $(Get-Date)"
$oMailMessage.IsBodyHTML      = $true  
$oMailMessage.BodyEncoding    = [System.Text.Encoding]::Unicode
$oMailMessage.Body = "<h2>Hello World!</h2></br>Screenshot at $(Get-Date) here."

$oContentType = New-Object -TypeName 'Net.Mime.ContentType' -Property @{
    MediaType = "image/png"
    Name      = "Screenshot at $(Get-Date).png"
}
$oAttachment = New-Object -TypeName 'Net.Mail.Attachment' -ArgumentList $oMemoryStream, $oContentType
$oMailMessage.Attachments.Add($oAttachment)

$oSmtpClient = New-Object -TypeName 'Net.Mail.SmtpClient' -ArgumentList 'mail.mail.com', 465 #465
$oSmtpClient.EnableSsl = $true
$oSmtpClient.Credentials = New-Object -TypeName 'System.Net.NetworkCredential' -ArgumentList 'from@mail.com', '123456'
$oSmtpClient.Send($oMailMessage)
Когда запускаю нифига не происходить. как будто и ничего не запускал. Windows 11

Отправлено: 15:26, 12-05-2023 | #50



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - создание скриншота и его моментальная отправка на почтовый ящик

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Автоматическая отправка файлов на почтовый ящик shaman18 Скриптовые языки администрирования Windows 19 31-10-2018 00:08
CMD/BAT - Отправка screenshot на п/ящик. qqwwaass Скриптовые языки администрирования Windows 12 06-07-2013 16:04
CMD/BAT - [решено] Отправка скриншота на email andrew_gurylyov@vk Скриптовые языки администрирования Windows 22 23-02-2012 11:52
V. 2007 - Разграничение прав на почтовый ящик. bombording Microsoft Exchange Server 1 13-02-2012 07:43
Разное - Создание LOG'a системы и отправка его по почте. FreshMen85 Microsoft Windows 7 0 08-08-2011 10:08




 
Переход