Автор Тема: [Сеть, интернет] Автоскриннер  (Прочитано 871 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн hardtunesmusic [?]

  • Новичок
  • *
  • Сообщений: 14
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Версия AutoIt: 3.

Описание:
Добрый день ребята. Помогите. Необходимо написать свой автоскриннер.
В чем заключается задача. Есть 5 рабочих машин которые находятся в домене.
Необходимо, чтоб автоматически создавался скриншот в папку расшаренную по сети с полными правами (это будет моя папка на локальном компе).
Так же необходимо, что бы программа останавливалась при блокировке компьютера и автоматически загружалась при перезагрузке пк.
Данная программа будет запускаться скриптом на указанные машины по сети посредством psexec.
Примечания:

Русское сообщество AutoIt

[Сеть, интернет] Автоскриннер
« Отправлен: Июль 13, 2018, 06:56:54 »

Помечен как лучший ответ пользователем hardtunesmusic Отправлен Июль 13, 2018, 17:58:48

Оффлайн alex33 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1419
  • Репутация: 177
  • Пол: Мужской
    • alekssamos ВКонтакте
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: [Сеть, интернет] Автоскриннер
« Ответ #1, Отправлен: Июль 13, 2018, 13:24:32 »
Код: AutoIt [Выделить]
#include <ScreenCapture.au3>
RegWrite("HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", @ScriptName, "REG_SZ", '"'&@ScriptFullPath&'"')
Global $sPath = "\\mycomp\screenshots\"&@ComputerName&"_"&@UserName&"_Image1.jpg"

; http://autoit-script.ru/index.php/topic,321.0.html
Global Const $DESKTOP_SWITCHDESKTOP = 0x0100

Func _IsWorkstationLocked()

    Local $Result = False

    $hDesktop = DllCall('user32.dll', 'hwnd', 'OpenDesktop', 'str', 'Default', 'int', 0, 'int', 0, 'int', $DESKTOP_SWITCHDESKTOP)
    If Not @error Then
        $Result = DllCall('user32.dll', 'int', 'SwitchDesktop', 'hwnd', $hDesktop[0])
        $Result = Not $Result[0]
        DllCall('user32.dll', 'int', 'CloseDesktop', 'hwnd', $hDesktop[0])
    EndIf
    Return $Result
EndFunc   ;==>_IsWorkstationLocked

While 1
    If Not _IsWorkstationLocked() Then _ScreenCapture_Capture($sPath)
    Sleep(5000)
WEnd
 


Оффлайн hardtunesmusic [?]

  • Новичок
  • *
  • Сообщений: 14

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: [Сеть, интернет] Автоскриннер
« Ответ #2, Отправлен: Июль 13, 2018, 18:02:16 »
Я прошу прощения и знаю что наглею. Но могли бы Вы пояснить как работает построчно? Что мне в данном скрипте нужно поменять и указать?

Для меня все это дремучий лес. :stars: Руководство поставило задачу срочную, и знакомый мне как раз подсказал этот язык. Но времени нет разбираться. По моему времени уже 23:00 и голова уже пухнет.
Цикли и условия как работают я слава богу знаю :)

Заранее спасибо и извиняюсь еще раз!

Оффлайн alex33 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1419
  • Репутация: 177
  • Пол: Мужской
    • alekssamos ВКонтакте
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: [Сеть, интернет] Автоскриннер
« Ответ #3, Отправлен: Июль 13, 2018, 18:32:09 »
На 1 строке мы подключаем библиотеку с функцией, чтобы делать скриншоты.
2 - добавление в реестр в автозагрузку
3 - переменная с путем до Вашей папки. \\имя компьютера\путь\
Дальше идет функция, чтобы определить, заблокирован компьютер или нет
А дальше проверка раз в 5 секунд, если не заблок., то сделать скрин.

Русское сообщество AutoIt

Re: [Сеть, интернет] Автоскриннер
« Ответ #3 Отправлен: Июль 13, 2018, 18:32:09 »

Оффлайн hardtunesmusic [?]

  • Новичок
  • *
  • Сообщений: 14

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: [Сеть, интернет] Автоскриннер
« Ответ #4, Отправлен: Июль 13, 2018, 19:35:09 »
На 1 строке мы подключаем библиотеку с функцией, чтобы делать скриншоты.
2 - добавление в реестр в автозагрузку
3 - переменная с путем до Вашей папки. \\имя компьютера\путь\
Дальше идет функция, чтобы определить, заблокирован компьютер или нет
А дальше проверка раз в 5 секунд, если не заблок., то сделать скрин.

Т.е. я запускаю скомпилированный файл под пользюком и там меняю только 3ю строчку где указываю свою шару?

Оффлайн alex33 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1419
  • Репутация: 177
  • Пол: Мужской
    • alekssamos ВКонтакте
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: [Сеть, интернет] Автоскриннер
« Ответ #5, Отправлен: Июль 13, 2018, 20:19:41 »
Т.е. я запускаю скомпилированный файл под пользюком и там меняю только 3ю строчку где указываю свою шару?
Должно быть так. Попробуй

Оффлайн hardtunesmusic [?]

  • Новичок
  • *
  • Сообщений: 14

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: [Сеть, интернет] Автоскриннер
« Ответ #6, Отправлен: Июль 14, 2018, 03:41:43 »
Т.е. я запускаю скомпилированный файл под пользюком и там меняю только 3ю строчку где указываю свою шару?
Должно быть так. Попробуй

Все хорошо, в автозагрузку падает. Но скриншоты не делает, не в сетевую папку не локально. Права на папку проверял.

Оффлайн alex33 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1419
  • Репутация: 177
  • Пол: Мужской
    • alekssamos ВКонтакте
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: [Сеть, интернет] Автоскриннер
« Ответ #7, Отправлен: Июль 14, 2018, 09:05:11 »
Код: AutoIt [Выделить]
Global $sPath = "\\172.20.10.4\SDMemory\screenshots\"&@ComputerName&"_"&@UserName&"_Image1.jpg"

Вот даже специально сервер включил. Всё делает.
Покажи, как ты путь указываешь. Может слеша или кавычки не хватает.

Русское сообщество AutoIt

Re: [Сеть, интернет] Автоскриннер
« Ответ #7 Отправлен: Июль 14, 2018, 09:05:11 »

Оффлайн hardtunesmusic [?]

  • Новичок
  • *
  • Сообщений: 14

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: [Сеть, интернет] Автоскриннер
« Ответ #8, Отправлен: Июль 14, 2018, 09:32:06 »
Код: AutoIt [Выделить]
Global $sPath = "\\172.20.10.4\SDMemory\screenshots\"&@ComputerName&"_"&@UserName&"_Image1.jpg"

Вот даже специально сервер включил. Всё делает.
Покажи, как ты путь указываешь. Может слеша или кавычки не хватает.

Да, прошу прощения. В конце слэш забыл.
А можно последнее попросить, сделать так, чтоб скриншот делался раз в 30 секунд и скрыть из трея программу? Чтоб только в процессах было видно.

Оффлайн alex33 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1419
  • Репутация: 177
  • Пол: Мужской
    • alekssamos ВКонтакте
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: [Сеть, интернет] Автоскриннер
« Ответ #9, Отправлен: Июль 14, 2018, 09:37:01 »
А можно последнее попросить, сделать так, чтоб скриншот делался раз в 30 секунд и скрыть из трея программу? Чтоб только в процессах было видно.
В начале скрипта напиши #NoTrayIcon , а где Sleep(5000) замени на 30000

Оффлайн hardtunesmusic [?]

  • Новичок
  • *
  • Сообщений: 14

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: [Сеть, интернет] Автоскриннер
« Ответ #10, Отправлен: Июль 14, 2018, 10:05:07 »
А можно последнее попросить, сделать так, чтоб скриншот делался раз в 30 секунд и скрыть из трея программу? Чтоб только в процессах было видно.
В начале скрипта напиши #NoTrayIcon , а где Sleep(5000) замени на 30000

Можно пару последних вопросов?
  • Код: AutoIt [Выделить]
    Global $sPath = "\\mycomp\screenshots\"&@ComputerName&"_"&@UserName&"_"&@MON&"_"&@MDAY&"_"&@HOUR&"_"&@MIN&"_"&@SEC&".jpg"

    Разделение только нижним подчеркиванием? Я Поставил : и программа не отрабатывает. Висит, но скрин не делает.
  • Все отрабатывает. Все хорошо, за что огромное спасибо. Можно еще как то сделать, что при запуске скрипта создавалась папка с именем компьютера с которого она была запущенна? Затем в этой папке создается папка с текущим днем недели и в ней складываются скриншоты. Как закончился день, создается новая папка и все вливается туда?

Заранее большое спасибо

Оффлайн alex33 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1419
  • Репутация: 177
  • Пол: Мужской
    • alekssamos ВКонтакте
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: [Сеть, интернет] Автоскриннер
« Ответ #11, Отправлен: Июль 14, 2018, 10:22:04 »
Код: AutoIt [Выделить]
Local $aWDays[8] = ["", "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]
Global $sPath = "\\mycomp\screenshots\"&@ComputerName&"_"&@UserName&"\"&$aWDays[@WDAY]
If Not FileExists($sPath) Then DirCreate($sPath)
$sPath &= "\"&@MON&"_"&@MDAY&"_"&@HOUR&"_"&@MIN&"_"&@SEC&".jpg"
 

А, да, забыл сказать. Загони это внутрь цикла While.
А иначе параметры только при запуске один раз будут определяться.
« Последнее редактирование: Июль 14, 2018, 10:52:19 от alex33, Причина: Объединение сообщений »

Оффлайн hardtunesmusic [?]

  • Новичок
  • *
  • Сообщений: 14

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: [Сеть, интернет] Автоскриннер
« Ответ #12, Отправлен: Июль 14, 2018, 12:23:00 »
Код: AutoIt [Выделить]
Local $aWDays[8] = ["", "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]
Global $sPath = "\\mycomp\screenshots\"&@ComputerName&"_"&@UserName&"\"&$aWDays[@WDAY]
If Not FileExists($sPath) Then DirCreate($sPath)
$sPath &= "\"&@MON&"_"&@MDAY&"_"&@HOUR&"_"&@MIN&"_"&@SEC&".jpg"
 

А, да, забыл сказать. Загони это внутрь цикла While.
А иначе параметры только при запуске один раз будут определяться.

Для удаления автозагрузки я так понял нужно прописать "RegDelete"?


Добавлено: Июль 14, 2018, 12:23:33
Все, все работает. Как же ты меня выручил. Огромнейшее спасибо!

Оффлайн alex33 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1419
  • Репутация: 177
  • Пол: Мужской
    • alekssamos ВКонтакте
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: [Сеть, интернет] Автоскриннер
« Ответ #13, Отправлен: Июль 14, 2018, 12:24:22 »
Должно быть так.

Оффлайн hardtunesmusic [?]

  • Новичок
  • *
  • Сообщений: 14

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: [Сеть, интернет] Автоскриннер
« Ответ #14, Отправлен: Июль 15, 2018, 06:21:45 »
Должно быть так.
При заблокированном экране все равно, скриншоты делаются.


Добавлено: Июль 15, 2018, 08:09:51
Должно быть так.

Код: AutoIt [Выделить]
DirCopy("\\10.2.1.1\Tstscr\screenshots","C:\ProgramData\Screenshots",1)
          Run('C:\ProgramData\Screenshots\RunScreenshots.exe /i','',@SW_HIDE)
 


Подскажи еще пожалуйста. Я через PsExec выполняю скрипт указанный выше. Все отрабатывает хорошо, файл в указанной папке появляется. Но файл не записывается в реестр в автозагрузку и не делает скриншоты. (Папка с Именем ПК и пользователем появляется, но появляется не под текущим пользователем а под "система") и не одного скриншота нет, при чем в диспетчере задач процесс висит.
« Последнее редактирование: Июль 15, 2018, 08:09:51 от hardtunesmusic, Причина: Объединение сообщений »

Русское сообщество AutoIt

Re: [Сеть, интернет] Автоскриннер
« Ответ #14 Отправлен: Июль 15, 2018, 06:21:45 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
3 Ответов
3526 Просмотров
Последний ответ Февраль 26, 2012, 12:56:23
от zlo-kazan
0 Ответов
2180 Просмотров
Последний ответ Март 01, 2013, 14:22:21
от Zalman1980
1 Ответов
3437 Просмотров
Последний ответ Июнь 08, 2013, 21:40:00
от madmasles
1 Ответов
1810 Просмотров
Последний ответ Март 04, 2015, 22:00:12
от madmasles
0 Ответов
925 Просмотров
Последний ответ Март 05, 2015, 15:28:03
от madmasles
3 Ответов
1930 Просмотров
Последний ответ Май 08, 2015, 19:06:10
от madmasles
0 Ответов
775 Просмотров
Последний ответ Май 09, 2015, 08:56:04
от madmasles
4 Ответов
1324 Просмотров
Последний ответ Июнь 16, 2015, 09:14:42
от madmasles
0 Ответов
440 Просмотров
Последний ответ Июнь 22, 2017, 11:57:13
от ssvih-miaa
1 Ответов
426 Просмотров
Последний ответ Сентябрь 14, 2017, 20:05:48
от Garrett