昨天的博文写了定时记录操作系统行为,其实说白了就是抓取了击键的记录和对应窗口的标题栏,而很多应用程序标题栏又包含当时记录的文件路径和文件名,用这种方式可以大致记录操作了哪些程序,打开了哪些文件,以及敲击了哪些按键。事实上这样记录操作系统的行为显得相对单薄一点,因为记录的内容不太形象,对于新手来说太过于隐晦了,对于人类来说,图像会比文字更加有利于用户理解。当操作系统不方便装屏幕记录软件,但又需要看已经登录用户在干什么的时候,用PowerShell的脚本来实现定时抓取图像的方式记录操作,查看图像就知道登陆用户做了什么,当然你存放图片的目录要隐蔽,不要让用户发现了为好。

     当然对于在学校计算机系的屌丝们,这个功能也可以用来了解自己的女神有什么喜好了。什么?咋把脚本安装到女神的电脑里?咋把抓的图片返回给你?拜托,这么简单的问题,还需要我帮你找答案么?女神的电脑坏了,通常都会找一个熟悉电脑软硬件的计算机系的童鞋来修的,修的时候悄悄动点手脚。图片返回的问题呢,完全可以定时抓取,然后抓取一定数量之后打包发到指定邮箱,然后删除本地图片嘛。什么?不知道PowerShell咋发邮件…你妹的,用System.Net.Mail.MailMessage组件调用SMTP发送邮件你不会?我以前写过类似文章的…好吧,送佛送到西,自己去看吧《使用PowerShell通过Smtp发送邮件》。还有就是写的脚本务必要加密,至于加密方式方法嘛,改天吧,改天专门写一篇文章写关于PowerShell脚本加密,这种事情嘛,如果被女神发现鸟,那可是吃不了兜着走的事啊。还有出去别告诉别人,我给你出的这主意,还有隐私的东西,自己把握好度,如果警察蜀黍请你去喝茶了可就不好玩了。本故事纯属虚构,如有雷同纯属巧合,本人只提供创意,如果具体实施被女神打破头,或者被警察蜀黍请去喝茶了,本人概不负任何法律责任哈。嘿嘿,不多扯了,先上今天的定时抓取屏幕图像的方法。

     其实方法不复杂,写了一个抓取屏幕的函数,定时执行,将抓取的图片存入指定位置,如果达到终止的时间,结束执行.代码不复杂,有看不懂的兄弟可以留言,我帮你解答。

接下来上代码:

        =====文件名:Get-TimedScreenshot.ps1=====
function Get-TimedScreenshot {
<#
Author:fuhj(powershell#live.cn ,http://fuhaijun.com)
Takes screenshots at a regular interval and saves them to disk.
.PARAMETER Path
Specifies the folder path.
.PARAMETER Interval
Specifies the interval in seconds between taking screenshots.
.Parameter EndTime
Specifies when the script should stop running in the format HH-MM
.Example
Get-TimedScreenshot -Path c:\temp\ -Interval 30 -EndTime 14:00
#> [CmdletBinding()] Param(
[Parameter(Mandatory=$True)]
[ValidateScript({Test-Path -Path $_ })]
[String] $Path, [Parameter(Mandatory=$True)]
[Int32] $Interval, [Parameter(Mandatory=$True)]
[String] $EndTime
) #Define helper function that generates and saves screenshot
Function Get-Screenshot {
$ScreenBounds = [Windows.Forms.SystemInformation]::VirtualScreen
$ScreenshotObject = New-Object Drawing.Bitmap $ScreenBounds.Width, $ScreenBounds.Height
$DrawingGraphics = [Drawing.Graphics]::FromImage($ScreenshotObject)
$DrawingGraphics.CopyFromScreen( $ScreenBounds.Location, [Drawing.Point]::Empty, $ScreenBounds.Size)
$DrawingGraphics.Dispose()
$ScreenshotObject.Save($FilePath)
$ScreenshotObject.Dispose()
}
Try { #load required assembly
Add-Type -Assembly System.Windows.Forms Do {
#get the current time and build the filename from it
$Time = (Get-Date) [String] $FileName = "$($Time.Month)"
$FileName += '-'
$FileName += "$($Time.Day)"
$FileName += '-'
$FileName += "$($Time.Year)"
$FileName += '-'
$FileName += "$($Time.Hour)"
$FileName += '-'
$FileName += "$($Time.Minute)"
$FileName += '-'
$FileName += "$($Time.Second)"
$FileName += '.png' #use join-path to add path to filename
[String] $FilePath = (Join-Path $Path $FileName) #run screenshot function
Get-Screenshot Write-Verbose "Saved screenshot to $FilePath. Sleeping for $Interval seconds" Start-Sleep -Seconds $Interval
} #note that this will run once regardless if the specified time as passed
While ((Get-Date -Format HH:mm) -lt $EndTime)
} Catch {Write-Error $Error[0].ToString() + $Error[0].InvocationInfo.PositionMessage}
}

 

执行方式,如下图所示:

 

执行效果,会在指定的目录,按照时间间隔生成桌面抓图,类似如下图所示.

哥,只能帮你到这了!兄弟们好自为之吧!

 

作者: 付海军

版权:本文版权归作者所有

转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢

要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接且保证内容完整!否则必究法律责任!

个人网站: http://www.fuhaijun.com/

PowerShell定时抓取屏幕图像的更多相关文章

  1. 在python3下使用OpenCV 抓取摄像头图像并实时显示3色直方图

    以下代码为在Python3环境下利用OpenCV 抓取摄像头的实时图像, 通过OpenCV的 calHist函数计算直方图, 并显示在3个不同窗口中. import cv2 import numpy ...

  2. 一篇文章教会你使用Python定时抓取微博评论

    [Part1--理论篇] 试想一个问题,如果我们要抓取某个微博大V微博的评论数据,应该怎么实现呢?最简单的做法就是找到微博评论数据接口,然后通过改变参数来获取最新数据并保存.首先从微博api寻找抓取评 ...

  3. <Win32_9>有意思的程序——抓取屏幕

    Win32学了一段时间了,跟着杨老师的脚步,准备学习MFC,因此最近几天在复习C++,于是发现有将近一周没写博文了…… 今天来写一个较为简单.但是比较有意思的东西 不知大家在理发店理发的时候注意到一个 ...

  4. 跟我一起玩Win32开发(22):抓取屏幕

    关于如何拷贝屏幕并保存,这里已经有现成的例子,我也不必去Copy人家了,我一向不喜欢Copy.这里有一个完整的例子,可以看看. http://msdn.microsoft.com/EN-US/libr ...

  5. 在python3下使用OpenCV 抓取摄像头图像提取蓝色

    工作中需要对摄像头进行调试, Python平台大大提高调试效率. 从网找到段代码, 可以从摄像头图像中抠出蓝色. import cv2 import numpy as np cap  = cv2.Vi ...

  6. 抓取屏幕并压缩生成HBITMAP

    HBITMAP GetScreenBmp() { HWND hwnd = ::GetDesktopWindow(); HDC hsrc = ::GetDC(hwnd); HDC hmemdc = :: ...

  7. 玩转FPGA边缘视觉——4k视频图像抓取

    随着现代图像及视频处理技术的不断发展,人们对图像处理提出了新的要求,最近几年,图像的分辨率和扫描频率都有了较大范围的提升,1080P分辨率的视频已经非常流行,2K甚至4K分辨率的图像也在火热发展中. ...

  8. 如何使用 Github Actions 自动抓取每日必应壁纸?

    如何白嫖 Github 服务器自动抓取必应搜索的每日壁纸呢? 如果你访问过必应搜索网站,那么你一定会被搜索页面的壁纸吸引,必应搜索的壁纸每日不同,自动更换,十分精美.这篇文章会介绍如何一步步分析出必应 ...

  9. 基于python编写的天气抓取程序

    以前一直使用中国天气网的天气预报组件都挺好,可是自从他们升级组件后数据加载变得非常不稳定,因为JS的阻塞常常导致网站打开速度很慢.为了解决这个问题决定现学现用python编写一个抓取程序,每天定时抓取 ...

随机推荐

  1. 我们为什麽需要有经验的DBA

    我们为什麽需要有经验的DBA 自从我进来园子之后,发觉虽然我们分享了很多质量很好的文章给大家,但是大家不一定能够消化得了这些文章 理解这些文章还是需要有一定环境,有环境你解决了,但是可能还有别的捷径减 ...

  2. log-malloc2 0.2.4 发布

    log-malloc2 0.2.4 发布了,该版本修复了日志格式输出的 bug. og-malloc2 是一个 malloc 日志预加载库,用于检测内存泄漏问题.

  3. 【Win10】解决 模拟器调试手机 错误-> 引导阶段... 无法找到指定路径......\2052\msdbgui.dll

    去弄几天的Web服务,又弄了几天的CefSharp,都是给其它组的同学做了一下支持,终于又可以回来玩下Win10啦. 今天想试一下UWP在手机上的效果,就找了台WP手机开始升级,结果下载速度遥遥无期, ...

  4. GitLab:解决Merge Request中Commits不更新的问题

    最近在使用 GitLab 的 Merge Requests 功能进行 Code Review .操作流程是这样的: 1)开发人员A要给一个项目增加一个新功能,先在这个项目上创建一个 Git 分支. 2 ...

  5. 年终知识分享——UML、设计模式、设计原则

                                                                                                        ...

  6. 简单SQL分页

    Select * From (     Select     Row_Number() Over(Order By 表1.CreateTime desc) as rowId,     表1.Alumn ...

  7. ichat在线客服jQuery插件(可能是历史上最灵活的)

    ichat是一款开源免费在线客服jQuery插件,通过该插件,您可以自由的定制属于自己的在线客服代码. ichat充分吸收传统在线客服插件的优点,并加上自身的独特设计,使得ichat可定制性异常强大. ...

  8. Msbuild利用cpu多核加速

    msbuild /t:Rebuild /p:Configuration=Release /m /m 自动检测cpu数量启动对应数量进程

  9. atitit.404错误的排查流程总结vOa6

    atitit.404错误的排查流程总结vOa6 1. 场景 1 1.1. 子应用猛个腊擦不能使用  404 兰.. 1 2. 服务器配置问题 2 2.1. 登录服务器管理子应用,查看应用是否启动okk ...

  10. cached过高导致内存溢出 java head space

     最近公司线上遇到老是内存溢出检查后发现cached过高 命令:free -m 命令:sync    //将缓存写入硬盘   cat /etc/redhat-release 这个是查看系统版本的命令c ...