Je voudrais appuyer sur un bouton d'une application Adobe AIR et exécuter un programme installé. Par exemple, j'aurais un bouton nommé "Démarrer Winamp". Lorsque vous appuyez dessus, Winamp.exe doit démarrer directement ... Je ne veux pas que quelque chose en ligne de commande soit exécuté, je veux seulement qu'un exe démarre. Ou ... est-ce la même chose? S'il vous plaît, laissez-moi savoir si cela est possible.
Je vous remercie.
Il n'y a pas de moyen direct de le faire. Essayez CommandProxy .
Lisez très attentivement le blog. Vous devez vraiment créer deux projets différents: un exécutable de système d'exploitation natif et une application AIR. L'exécutable natif lance votre application AIR. L’application AIR demande à son tour à l’exécutable de traiter les demandes au niveau du système d’exploitation.
Téléchargez le code source à partir de Google Code et créez deux projets - un Visual Studio/Mono pour l’exemple C # exe et un autre - pour l’application AIR. Ici est un lien qui décrit comment configurer l'ancien.
Dans le fichier MXML principal de votre application AIR, vous devez procéder comme suit:
Créez un objet CommandProxy
, ajoutez quelques écouteurs d'événement pour la détection de connexion, et Command
réponse et erreur.
Connectez-vous à l'exe natif via un appel connect
Dans le gestionnaire d'événements pour connect
, créez une nouvelle Command
e.g. ScreenshotCommand
et l'exécuter (via la méthode CommandProxy.execute
)
... et c'est tout!
J'espère que cela t'aides.
Avec AIR 2.0, vous pouvez maintenant:
if(NativeProcess.isSupported)
{
var file:File = File.desktopDirectory;
file = file.resolvePath("StyleLookupold.exe");
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = file;
var process:NativeProcess = new NativeProcess();
process.start(nativeProcessStartupInfo);
}
Vous devez également ajouter ceci à votre fichier de descripteur.
<supportedProfiles>extendedDesktop</supportedProfiles>
La réponse est en deux parties. Premièrement, si vous DEVEZ réellement exécuter un fichier .exe, la seule solution consiste à utiliser un proxy de commande. Personnellement, en utiliser un en .Net/Mono est un peu exagéré. Je ne connais pas Mono, mais demander à vos utilisateurs d'installer .Net et AIR les effraierait presque tous. De plus, si j'allais demander aux utilisateurs d'installer Mono, pourquoi ne pas écrire simplement l'interface utilisateur dans Mono et en finir avec ...?
Vous pourriez écrire un simple proxy de commande en Ruby qui serait vraiment multi-plateforme et facile en environ 5 minutes (je viens de le faire, si vous voulez que le code me commente ici et je le posterai). Si vous voulez contrôler le processus après son lancement, c'est une entreprise plus sérieuse. Pour la distribution, etc., je pense que Ruby serait plus facile.
D'autre part , vérifiez cette idée . Jeff suggère d'utiliser une demande d'URL d'AIR. En gros, si votre navigateur l’interprète correctement, vous êtes prêt. Le code ressemble à ceci
var request : URLRequest = new URLRequest('C:\\playlists\\test.m3u');
Je pense qu’avec un peu de créativité (avec les types Mime en particulier), cette seconde solution pourrait même fonctionner pour Winamp (par exemple, une liste de lecture ou quelque chose du genre).
Bonne chance et merci pour la question, qui est probablement une dupe mais Google n'a trouvé que celle-ci, alors vous avez gagné :)
Je pense que FluorineFx fait ce que vous voulez: http://aperture.fluorinefx.com/?p=5
AIR 2.0 aura cette capacité.
Il devrait sortir en version bêta d’ici la fin de l’année (2009) et être expédié au premier semestre de 2010.
http://blogs.Adobe.com/air/2009/10/previewing_Adobe_air_2_at_adob.html
API de processus natif À partir de AIR 2, les développeurs auront accès à une API de processus natif qui permettra aux applications d'appeler et de communiquer avec des applications natives sur la machine locale. Afin de préserver la nature multiplate-forme du format de fichier .air, les applications qui tirent parti de l'API de processus natif doivent être déployées en tant qu'installateurs natifs tels que .exe et .dmg. Le SDK d’exécution AIR inclura la prise en charge de la génération d’installateurs natifs de base.
Voir cet article de blog: Exécuter un fichier exe à partir d'AIR
Court résumé:
"Si vous avez vraiment besoin d'exécuter des fichiers exe Externes et qu'il n'y a pas d'autre moyen De résoudre votre problème, vous devrez Vous assurer que l'utilisateur exécute ce [.____. .] autre logiciel avant de lancer l'application AIR. "
Une autre façon de procéder consiste à lancer un serveur Web simple sur une machine locale (en arrière-plan) et à appeler ses méthodes à l'aide de HTTPService.
Le serveur Web d’arrière-plan pourrait par exemple être en python: http://fragments.turtlemeat.com/pythonwebserver.php
Et il peut lancer des exécutables et fournir des fonctionnalités qu'AIR ne peut pas.
Cela permet de garder le code Flex propre car il implémente uniquement l'interface REST et le langage python (ou un autre langage) le reste du travail. Vous pouvez également tirer parti de l’utilisation de python en tant qu’interface avec la base de données sqlite ou de lancer Django en tant que serveur Web.
Le seul inconvénient est que le serveur doit déjà fonctionner sur localhost .. et écouter un port (c'est-à-dire 81). vous pouvez probablement le faire en lançant le serveur au démarrage du système.
Ce n'est pas la meilleure façon, mais dans certains cas, cela pourrait aider votre projet comme il l'a fait pour moi.
sous mac os x, si vous souhaitez lancer un fichier .app, vous devez écrire ce qui suit pour le chemin du fichier. (Supposons que le nom de l'application est xxx)
if(NativeProcess.isSupported)
{
//not correct
//file = file.resolvePath("/Applications/xxx.app");
//correct
file = file.resolvePath("/Applications/xxx.app/Contents/MacOS/xxx");
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = file;
var process:NativeProcess = new NativeProcess();
process.start(nativeProcessStartupInfo);
}
Ou simple, mon site crée un programme d'installation personnalisé pour une nouvelle application en savoir plus
Conseil bonus: Nous vous recommandons d’utiliser Enigma Virtual Box car il est gratuit et très utile pour la virtualisation d’applications ou Exe-Packer comme BoxedApp Packer mais coûte beaucoup plus cher qu’Enigma Virtual Box Merci!