当前位置:首页 » 编程软件 » 截屏编程

截屏编程

发布时间: 2025-09-12 21:54:33

① 求屏幕定时截屏并保存图像程序.bat

复制粘贴到记事本,另存为xx.bat,编码选ANSI

<#:
cls
@echooff
rem整点自动截屏
modeconcols=40lines=8
if"%~1"equ""(
start/min"""%~f0"fk
exit
)
cd/d"%~dp0"
powershell-sta-NoProfile-ExecutionPolicybypass"Invoke-Command-ScriptBlock([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default)))"
pause
exit
#>
#截屏图片存放的目录
$folder="C:ScreenShot";
if(-not(test-path-liter$folder)){[void](md$folder)};

$codes=@'
usingSystem.Drawing;
usingSystem.Drawing.Imaging;
usingSystem.Windows.Forms;
publicstaticclassScreenShot{
publicstaticvoidSave(stringf){
Imageimg=newBitmap(Screen.AllScreens[0].Bounds.Width,Screen.AllScreens[0].Bounds.Height);
Graphicsg=Graphics.FromImage(img);
g.CopyFromScreen(newPoint(0,0),newPoint(0,0),Screen.AllScreens[0].Bounds.Size);
img.Save(f,ImageFormat.Bmp);
}
}
'@;

Add-Type-TypeDefinition$codes-ReferencedAssemblies'System.Windows.Forms','System.Drawing';
$n=0;while($true){
cls
$now=(get-date).toString('yyyy-MM-ddHH:mm:ss');
write-host'Keepthiswindowminimized';
write-host'Donotclosethiswindow';
write-host$n.toString();write-host$now;
$m=[regex]::match($now,'00:0[0-9]$');
if($m.Success){
$newfile=$folder.trimend('')+''+($now-replace'[-s:]|dd$','')+'00.bmp';
if(-not(test-path-liter$newfile)){$n++;[ScreenShot]::Save($newfile);};
};
start-sleep-Seconds1;
}

② 如何在Android里面使用代码截屏

  • 回答:Android SDK的截屏

  • 方法步骤:如下

方法一:

(1)主要就是利用SDK提供的View.getDrawingCache()方法。网上已经有很多的实例了。首先创建一个android project,然后进行Layout,画一个按键

HelloAndroid.java实现代码为:packagecom.example.helloandroid;

这个代码会在按下app中按键的时候自动在手机的/sdcard/目录下生成一个时间戳命名的png截屏文件。

这种截屏有一个问题,就是只能截到一部分,比如电池指示部分就截不出来了。

(2)在APK中调用“adb shell screencap -pfilepath” 命令

  • 该命令读取系统的framebuffer,需要获得系统权限:

(1). 在AndroidManifest.xml文件中添加

(2). 修改APK为系统权限,将APK放到源码编译

(3).利用系统的API,实现Screenshot,这部分代码是系统隐藏的,需要在源码下编译,

1).修改Android.mk, 添加系统权限

LOCAL_CERTIFICATE := platform

2).修改AndroidManifest.xml 文件,添加

权限

方法二:

  • Android ddmlib进行截屏

Android本地编程(Native Programming)读取framebuffer

(1)命令行,框架的截屏功能是通过framebuffer来实现的,所以我们先来介绍一下framebuffer。

Linux FrameBuffer 本质上只是提供了对图形设备的硬件抽象,在开发者看来,FrameBuffer 是一块显示缓存,往显示缓存中写入特定格式的数据就意味着向屏幕输出内容。所以说FrameBuffer就是一块白板。例如对于初始化为16 位色的FrameBuffer 来说, FrameBuffer中的两个字节代表屏幕上一个点,从上到下,从左至右,屏幕位置与内存地址是顺序的线性关系。帧缓存有个地址,是在内存里。我们通过不停的向frame buffer中写入数据, 显示控制器就自动的从frame buffer中取数据并显示出来。全部的图形都共享内存中同一个帧缓存。

  • 方法三:Android截屏实现思路

Android系统是基于Linux内核的,所以也存在framebuffer这个设备,我们要实现截屏的话只要能获取到framebuffer中的数据,然后把数据转换成图片就可以了,android中的framebuffer数据是存放在 /dev/graphics/fb0 文件中的,所以我们只需要来获取这个文件的数据就可以得到当前屏幕的内容。

现在我们的测试代码运行时候是通过RC(remote controller)方式来运行被测应用的,那就需要在PC机上来访问模拟器或者真机上的framebuffer数据,这个的话可以通过android的ADB命令来实现。

  • 注意:

1、需要在AndroidManifest.xml中加入代码:android:sharedUserId="android.uid.system"。

2、由于调用了@hide的API,所以编译得时候请使用makefile编译。或者通过在Eclipse中添加Jar文件通过编译。

3、此代码只在Android4.0中使用过,2.3的就没去做测试了。

  • 补充说明:

  1. 利用TakeScreenShotService截图Android手机一般都自带有手机屏幕截图的功能:在手机任何界面(当然手机要是开机点亮状态),通过按组合键,屏幕闪一下,然后咔嚓一声,截图的照片会保存到当前手机的图库中,

  2. 对手机android源码中通过组合键屏幕截图的整个流程有个大体了解了,在改动中熟悉按键的捕获原理,并且清楚调用的截屏函数接口即可。

热点内容
微信的支付密码怎么设置在哪里 发布:2025-09-12 23:42:42 浏览:173
数据结构与算法面试 发布:2025-09-12 23:34:11 浏览:404
倩女幽魂手游辅助脚本 发布:2025-09-12 23:28:09 浏览:518
php环境win 发布:2025-09-12 23:27:16 浏览:779
python遍历二维数组 发布:2025-09-12 23:17:57 浏览:247
手机阅读脚本 发布:2025-09-12 23:12:56 浏览:528
外文局和中央编译局 发布:2025-09-12 23:04:00 浏览:955
php进行md5加密 发布:2025-09-12 23:02:03 浏览:347
lol排位都是脚本 发布:2025-09-12 22:49:08 浏览:916
php高级技术 发布:2025-09-12 22:49:07 浏览:686