Adobe AIR Desktop应用程序可以拍摄全屏快照(也称为“打印屏幕”按钮)

时间:2010-06-01 21:09:27

标签: air printscreen

我想知道是否有可能从空中应用程序获取全屏快照。 我感兴趣的是与Windows中的PrintScreen按钮类似的功能,它可以拍摄所有屏幕的快照,包括第三方应用程序窗口,而不仅仅是运行air应用程序的窗口。 如果它不是特定于air,而flash / flex API可以提供这样的功能,它也会很棒。 提前很多。

1 个答案:

答案 0 :(得分:4)

查看this article,因为它解释了通过调用本机进程获取屏幕截图:

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 device profile。 如果您最初使用ADL进行测试,请务必使用extendedDesktop个人资料,否则NativeProcess.isSupported将返回false

有关详细信息,请查看NativeProcess documentationCommunicating with native processes in AIR developer guide