2017-06-06 2 views
0

Je crée une application AIR avec Flash CC, afin que je puisse utiliser les processus natifs. Avant même de l'intégrer dans mon projet complet, j'ai créé un petit projet de test pour voir si cela fonctionnerait. Je l'ai essayé sous Windows et ça n'a pas marché. Je suis passé à Mac et l'ai obtenu pour travailler là, cependant.AIR Native Process fonctionne sur Mac, mais pas Windows

Le processus natif est déclenché par une pression sur une touche. Le fichier est publié en tant qu'installateur Windows, pas un paquet Air. J'ai veillé à inclure extendedDesktop dans le fichier xml. J'ai vérifié les chemins de fichier. Y a-t-il d'autres raisons pour lesquelles cela ne fonctionnerait pas?

package { 

    import flash.display.MovieClip; 
    import flash.filesystem.File; 
    import flash.events.KeyboardEvent; 
    import flash.desktop.NativeProcess; 
    import flash.desktop.NativeProcessStartupInfo; 


    public class Main extends MovieClip { 

     var exe:File = new File("C:\Windows\System32\notepad.exe"); 
     var nativeProcess:NativeProcess = new NativeProcess(); 
     var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo(); 
     var args:Vector.<String> = new Vector.<String>(); 

     public function startProcess(event:KeyboardEvent):void 
     { 
      if (event.keyCode == 65) { 
       nativeProcessStartupInfo.executable = exe; 
       args.push("C:/Users/Tristan/Documents/TVCR/airTestFile.rtf"); 
       nativeProcessStartupInfo.arguments = args; 
       nativeProcess.start(nativeProcessStartupInfo); 
      } 
     } 
    } 
} 
+0

fonctionne-t-il dans un mode "film test"? Le script semble bien alors je conseille de faire un peu de débogage. Créez un champ de texte pour afficher les informations du journal, comme si la touche enfoncée déclenchait l'événement, et aussi ** essayez ** ... ** attrapez ** le ** NativeProcess.start ** pour les exceptions. – Organis

+0

Les processus natifs ne fonctionnent pas en mode "test de film". Ils ne fonctionnent que lors de la publication d'un programme d'installation de Windows. Je ne suis pas sûr de savoir comment créer un champ de texte pour les informations de journal. Pourriez-vous me montrer un tutoriel? – browntastic

+0

Désolé, je ne comprends pas ... Vous ne savez pas comment créer un ** MovieClip ** dans la bibliothèque, comment créer un ** TextField **, comment les ajouter au scénario principal? – Organis

Répondre

0

Comment générer des informations de débogage. Le code suivant montrera quelques messages si les événements de clavier déclenchent vraiment la méthode de gestionnaire.

public function startProcess(event:KeyboardEvent):void 
{ 
    // LogText:TextField 
    LogText.appendText("\n\nKey Pressed: " + event.keyCode); 
} 

Comment diagnostiquer la production et une exception:

try 
{ 
    nativeProcess.start(nativeProcessStartupInfo); 
    LogText.appendText("\n\nThe process has been started without exceptions."); 
} 
catch (fail:Error) 
{ 
    // LogText:TextField 
    LogText.appendText("\n\n" + fail.getStackTrace()); 
} 
+0

Cela renvoyait une réponse pour l'événement de clavier, mais les arguments try et catch ne renvoyaient rien. – browntastic

+0

@browntastic Ensuite, placez tout le reste sous les blocs ** ** ** ** ** catch ** afin d'apprendre où il échoue. – Organis

+0

Je reçois l'erreur "1120: L'accès de la propriété non définie échoue." lors de la publication. – browntastic

0

Il semble que le chemin du fichier que j'utilisais n'était pas dans le bon format.

C:\Windows\System32\notepad.exe 

devrait être

C:\\Windows\\System32\\notepad.exe 
0

Le chemin du fichier pour Windows doit utiliser une double barre oblique inverse « \ » depuis une seule barre oblique inverse est interprété comme une évasion. Quelque chose qui est pratique, surtout si vous avez besoin de créer un chemin vers un exécutable ou de faire quelque chose qui va être Windows et Mac est d'utiliser File.separator car il fera "\" pour Windows et "/" pour Mac/Linux

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/filesystem/File.html#separator