PowerShell定时抓取屏幕图像
昨天的博文写了定时记录操作系统行为,其实说白了就是抓取了击键的记录和对应窗口的标题栏,而很多应用程序标题栏又包含当时记录的文件路径和文件名,用这种方式可以大致记录操作了哪些程序,打开了哪些文件,以及敲击了哪些按键。事实上这样记录操作系统的行为显得相对单薄一点,因为记录的内容不太形象,对于新手来说太过于隐晦了,对于人类来说,图像会比文字更加有利于用户理解。当操作系统不方便装屏幕记录软件,但又需要看已经登录用户在干什么的时候,用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定时抓取屏幕图像的更多相关文章
- 在python3下使用OpenCV 抓取摄像头图像并实时显示3色直方图
以下代码为在Python3环境下利用OpenCV 抓取摄像头的实时图像, 通过OpenCV的 calHist函数计算直方图, 并显示在3个不同窗口中. import cv2 import numpy ...
- 一篇文章教会你使用Python定时抓取微博评论
[Part1--理论篇] 试想一个问题,如果我们要抓取某个微博大V微博的评论数据,应该怎么实现呢?最简单的做法就是找到微博评论数据接口,然后通过改变参数来获取最新数据并保存.首先从微博api寻找抓取评 ...
- <Win32_9>有意思的程序——抓取屏幕
Win32学了一段时间了,跟着杨老师的脚步,准备学习MFC,因此最近几天在复习C++,于是发现有将近一周没写博文了…… 今天来写一个较为简单.但是比较有意思的东西 不知大家在理发店理发的时候注意到一个 ...
- 跟我一起玩Win32开发(22):抓取屏幕
关于如何拷贝屏幕并保存,这里已经有现成的例子,我也不必去Copy人家了,我一向不喜欢Copy.这里有一个完整的例子,可以看看. http://msdn.microsoft.com/EN-US/libr ...
- 在python3下使用OpenCV 抓取摄像头图像提取蓝色
工作中需要对摄像头进行调试, Python平台大大提高调试效率. 从网找到段代码, 可以从摄像头图像中抠出蓝色. import cv2 import numpy as np cap = cv2.Vi ...
- 抓取屏幕并压缩生成HBITMAP
HBITMAP GetScreenBmp() { HWND hwnd = ::GetDesktopWindow(); HDC hsrc = ::GetDC(hwnd); HDC hmemdc = :: ...
- 玩转FPGA边缘视觉——4k视频图像抓取
随着现代图像及视频处理技术的不断发展,人们对图像处理提出了新的要求,最近几年,图像的分辨率和扫描频率都有了较大范围的提升,1080P分辨率的视频已经非常流行,2K甚至4K分辨率的图像也在火热发展中. ...
- 如何使用 Github Actions 自动抓取每日必应壁纸?
如何白嫖 Github 服务器自动抓取必应搜索的每日壁纸呢? 如果你访问过必应搜索网站,那么你一定会被搜索页面的壁纸吸引,必应搜索的壁纸每日不同,自动更换,十分精美.这篇文章会介绍如何一步步分析出必应 ...
- 基于python编写的天气抓取程序
以前一直使用中国天气网的天气预报组件都挺好,可是自从他们升级组件后数据加载变得非常不稳定,因为JS的阻塞常常导致网站打开速度很慢.为了解决这个问题决定现学现用python编写一个抓取程序,每天定时抓取 ...
随机推荐
- .NET Socket服务编程之-高效连接接入编
在.NET上编写网络服务深入都有2,3年了,而这些时间时如何在.NET里实现网络服务积累了一些经验.在接下来的时间里会把这方面的经验通过博客的方式分享出来.而这一章主要是讲解在如果提高服务连接接入的效 ...
- WebApi与手机客户端通信安全机制
最近公司有几个项目需要开发手机客户端,服务器端选用WebApi,那么如何保证手机客户端在请求服务器端时数据不被篡改,如何保证一个http请求的失效机制,下面总结一下我们在项目中针对这两个问题的解决方案 ...
- 冲刺阶段 day 8
项目进展:教师部分包括教师所属系别.工号.姓名.性别.电话.邮箱.地址.我们已经基本完成窗体的构建和代码编写.可以实现教师信息的增加查询. 代码如下: using System; using Syst ...
- [异常] VC6.0 error LNK2001: unresolved external symbol _main解决办法
来自:http://www.douban.com/note/65638800/ 学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说 ...
- Spring-Context之二:使用Spring提供的测试框架进行测试
Spring框架是无侵入性的,所以你的代码可以完全是POJO(plain old java object),直接使用Junit就可以完成大部分的单元测试.但是在集成测试方面就比较吃力了.单元测试层面你 ...
- java web开发 图片上传功能
基本思路在于,配置路径,然后用java I/O的api将图片上传到该目录下. String photoPath = ServletActionContext.getServletContext( ...
- debian7.8 安装 chm
一.CHMSEE 这个比较常见了,呵呵. 安装: sudo apt-get install chmsee 之后在应用程序附件中就可以看到了. 问题1: 启动不了或者出现 chmsee: error w ...
- Linux-vmware tools安装与cdrom挂载
前述 昨天想直接复制虚拟机centos系统中命令行的内容到主机的txt文档上进行保存,发现不能实现虚拟机与主机之间的直接通讯,后来查资料发现原来是由于我的虚拟机没有安装vwmare tools的缘故. ...
- 【Android】应用程序Activity启动过程分析
在Android系统中,有两种操作会引发Activity的启动,一种用户点击应用程序图标时,Launcher会为我们启动应用程序的主Activity:应用程序的默认Activity启动起来后,它又可以 ...
- Java CAS 和ABA问题
独占锁:是一种悲观锁,synchronized就是一种独占锁,会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁. 乐观锁:每次不加锁,假设没有冲突去完成某项操作,如果因为冲突失败就重试,直到成功 ...