2010-06-01 8 views
2

Je voudrais savoir s'il est possible d'obtenir des instantanés en plein écran à partir d'une application aérienne. Ce qui m'intéresse, c'est une fonctionnalité similaire au bouton PrintScreen dans Windows, qui prend des instantanés de tous les écrans, y compris les fenêtres d'applications tierces, et pas seulement la fenêtre dans laquelle l'application air est en cours d'exécution. Si ce n'est pas spécifique à l'air, et API flash/flex peut fournir une telle fonctionnalité, ce serait aussi génial. Merci beaucoup d'avance.L'application Adobe AIR Desktop peut-elle prendre des instantanés en plein écran (bouton Imprimer l'écran)

Répondre

4

Découvrez this article comme il explique l'obtention d'une capture d'écran en appelant un processus natif:

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"); 
} 

Une chose importante à garder à l'esprit est le AIR device profile. Si vous testez initialement dans ADL, veillez à utiliser le profil extendedDesktop, sinon NativeProcess.isSupported renverra false.

Pour plus de détails consulter la NativeProcess documentation et la Communicating with native processes in AIR developer guide

+0

Le lien est rompu; il redirige juste vers la page d'accueil de ce site. – Brian

+0

J'ai mis à jour le lien en utilisant [wayback machine] (http://archive.org/web/) et fourni plus de détails –