我想知道是否可以从空中应用程序中获取全屏快照。我感兴趣的是类似于 Windows 中的 PrintScreen 按钮的功能,它拍摄所有屏幕的快照,包括第三方应用程序窗口,而不仅仅是运行 air 应用程序的窗口。如果它不是特定于空气的,并且 flash/flex API 可以提供这样的功能,那也很棒。提前感谢很多。
问问题
1730 次
1 回答
4
查看这篇文章,因为它解释了通过调用本机进程来获取屏幕截图:
import flash.filesystem.File;
import flash.events.NativeProcessExitEvent;
var process:NativeProcess;
if(NativeProcess.isSupported) {
var file:File = File.applicationDirectory;
var args:Vector.<String> = new Vector.<String>();
if (Capabilities.os.toLowerCase().indexOf("win") > -1) {
file = file.resolvePath("PATH/TO/WINDOWS/printscr");
//use your prefered screenshot tool here (e.g. https://code.google.com/p/screenshot-cmd/
//also setup the args as needed
} else if (Capabilities.os.toLowerCase().indexOf("mac") > -1) {
file = file.resolvePath("/usr/sbin/screencapture");
args[0] = "-i";
args[1] = "screencapture.png";
}
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
nativeProcessStartupInfo.arguments = args;
nativeProcessStartupInfo.executable = file;
nativeProcessStartupInfo.workingDirectory = File.desktopDirectory;
process = new NativeProcess();
process.start(nativeProcessStartupInfo);
process.addEventListener(NativeProcessExitEvent.EXIT,done);
}else trace("NativeProcess NOT SUPPORTED!");
function done(e:NativeProcessExitEvent):void{
trace("screenshot comprete");
}
要记住的一件重要事情是AIR 设备配置文件。如果您最初在 ADL 中进行测试,请务必使用extendedDesktop
配置文件,否则NativeProcess.isSupported
将返回false
.
有关更多详细信息,请查看NativeProcess 文档和与 AIR 开发人员指南中的本机进程通信
于 2010-06-07T18:36:54.067 回答