Может ли приложение Adobe AIR Desktop делать полноэкранные снимки (кнопка «Экран печати») - PullRequest
2 голосов
/ 02 июня 2010

Я хотел бы знать, возможно ли получить полноэкранные снимки экрана из эфирного приложения. Что меня интересует, так это функциональность, аналогичная кнопке PrintScreen в окнах, которая делает снимки всех экранов, включая окна сторонних приложений, а не только окно, в котором запущено приложение. Если это не относится к воздуху, и Flash / Flex API может обеспечить такую ​​функциональность, это также было бы здорово. Большое спасибо заранее.

1 Ответ

4 голосов
/ 07 июня 2010

Ознакомьтесь с этой статьей , поскольку она объясняет получение скриншота путем вызова собственного процесса:

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

...