2009-03-23 5 views
32

Ich möchte eine Schaltfläche aus einer Adobe AIR-Anwendung drücken und einige installierte Programme ausführen. Zum Beispiel würde ich eine Schaltfläche namens "Start Winamp" haben. Wenn dies gedrückt wird, sollte Winamp.exe direkt starten ... Ich möchte nicht, dass eine Befehlszeile ausgeführt wird, ich möchte nur eine exe starten. Oder ... ist es das Gleiche? Bitte lassen Sie mich wissen, wenn dies möglich ist.Adobe AIR Programm ausführen

Vielen Dank.

+0

Nichts für ungut, aber es wurde gefragt. – dkretz

+6

@Le dorfier, wo? Ich denke, das ist die erste Frage zu dieser Frage. –

+1

Würden Sie die akzeptierte Frage jetzt überprüfen, wenn NativeProcess existiert? – Jono

Antwort

10

Es gibt keine direkte Möglichkeit, es zu tun. Versuchen Sie CommandProxy.

Lesen Sie den Blogpost sehr sorgfältig. Sie müssen wirklich zwei verschiedene Projekte erstellen: eine native OS-Programmdatei und eine AIR-App. Die native ausführbare Datei startet Ihre AIR-Anwendung. Die AIR-Anwendung fordert von der ausführbaren Datei an, Anforderungen auf Betriebssystemebene zu verarbeiten.

Laden Sie die Quelle von Google Code herunter und erstellen Sie zwei Projekte - ein Visual Studio/Mono für das Beispiel C# exe und ein anderes - für die AIR-Anwendung. Here ist ein Link, der beschreibt, wie der erstere eingerichtet wird.

In Ihrer MXML-Hauptdatei der AIR-Anwendung, müssen Sie Folgendes tun:

  • erstellen CommandProxy Objekt, ein paar Event-Listener, zum Anschluss Erkennung und Command Reaktion und Fehler hinzufügen.

  • Verbindung mit dem nativen exe über einen connect Anruf

  • In der Event-Handler für connect, erstellen Sie eine neue Command z.B. ScreenshotCommand und führen Sie es (via CommandProxy.execute Methode)

... und das ist es!

Hoffe, das hilft.

+0

Ich weiß wirklich nicht, wie es funktioniert. Hast du ein funktionierendes Beispiel? Tnks –

+1

CommandProxy? Mit welchen Problemen haben Sie konfrontiert? Ich habe nichts vorbereitet, kann es aber morgen noch einmal versuchen. – dirkgently

+0

Ich weiß einfach nicht, wie ... starten Sie die ganze Sache ... welche Dateien zu verwenden..wie kompilieren. Ich brauche wirklich ein Beispiel von etwas von AIR, das einen Befehl wie "calc" auf Windows sendet. Thnank du! –

1

diese Blog-Post Siehe: Run an exe file from AIR

Kurze Zusammenfassung:

„Wenn Sie wirklich externe EXE-Dateien ausführen müssen, und es gibt keine andere Möglichkeit, Ihr Problem zu lösen, dann werden Sie Stellen Sie sicher, dass der Benutzer eine andere Software ausführt, bevor Sie die AIR-Anwendung starten. "

1

Im Moment gibt es keine Möglichkeit, dies nativ mit AIR zu tun. Es gibt einige Optionen, aber:

  • Shu
  • Red5 läuft auf localhost
  • einen Dienst erstellen, die auf dem Computer des Benutzers ausgeführt wird und eine Verbindung zu ihm sockets verwenden.
4

Die Antwort kommt in zwei Teile. Wenn Sie wirklich eine EXE-Datei ausführen MÜSSEN, ist die einzige Möglichkeit, einen Befehls-Proxy zu verwenden. Persönlich ist die Verwendung eines in .Net/Mono etwas übertrieben.Ich kenne Mono nicht, aber fragen Ihre Benutzer zu installieren. NET und AIR würde fast alle von ihnen erschrecken. Und wenn ich die Benutzer bitten würde, Mono zu installieren, warum sollte ich nicht einfach die Benutzeroberfläche in Mono schreiben und fertig damit sein ...?

Sie könnten einen einfachen Befehl Proxy in Ruby schreiben, die wirklich plattformübergreifend und wenig Aufwand in ca. 5 Minuten wäre (Ich habe es gerade getan, wenn Sie möchten, dass der Code mich kommentiert und ich werde es posten). Wenn Sie den Prozess nach dem Start kontrollieren wollen, ist es ein ernsthafteres Unterfangen. Für die Verbreitung usw. glaube ich, dass Ruby einfacher wäre.

Auf der anderen Seite, check this idea out. Jeff schlägt vor, eine URL-Anfrage von AIR zu verwenden. Grundsätzlich, wenn Ihr Browser es richtig interpretieren würde, sind Sie bereit zu gehen. Der Code sieht wie folgt aus

var request : URLRequest = new URLRequest('C:\\playlists\\test.m3u'); 

Ich denke, dass mit einem wenig Kreativität (mit Mime-Typen, vor allem), wobei diese zweite Lösung könnte auch für Winamp arbeiten (z .., eine Wiedergabeliste oder etwas).

Viel Glück und danken Ihnen für die Frage, die wahrscheinlich eine Betrogene ist aber Google gefunden nur diese eine so haben Sie gewonnen :)

3

AIR 2.0 wird diese Fähigkeit haben.

Es wird erwartet, bis Ende des Jahres in der Beta kommen (2009) und versendet ersten Halbjahr 2010.

http://blogs.adobe.com/air/2009/10/previewing_adobe_air_2_at_adob.html

india Prozess API Beginnend mit AIR 2, werden die Entwickler Zugriff auf eine haben Native Prozess-API, die es Anwendungen ermöglicht, native Anwendungen auf dem lokalen Computer aufzurufen und mit ihnen zu kommunizieren. Um den plattformübergreifenden Charakter des .air-Dateiformats zu erhalten, müssen Anwendungen, die die native Prozess-API nutzen, als native Installationsprogramme wie .exe und .dmg bereitgestellt werden. Das AIR-Laufzeit-SDK enthält Unterstützung für die Erstellung von grundlegenden nativen Installationsprogrammen.

65

Mit AIR 2.0 können Sie jetzt:

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

} 

Sie müssen auch diese zu Ihrem Descriptor-Datei hinzuzufügen.

<supportedProfiles>extendedDesktop</supportedProfiles> 
+0

Ja, das funktioniert !! – rafalry

+0

Wo ist die Deskriptordatei? Ich benutze Flash CS5 – Lucas

+2

@ Lucas Gute Frage, In Flash CS5 werden Sie gehen zu 'Datei> Adobe Air 2 Einstellungen' Es wird ein Abschnitt namens ** Profile: ** mit 4 Kontrollkästchen sein. Stellen Sie sicher, dass * Extended Desktop * der einzige überprüfte ist. –

1

Ein anderer Weg, dies zu tun einfache Webserver (im Hintergrund) auf dem lokalen Rechner startet, und nennt es HTTPService- mit Methoden. http://fragments.turtlemeat.com/pythonwebserver.php

Und es kann ausführbare Dateien starten und bieten Funktionen, die Luft nicht:

Der Hintergrund Webserver zum Beispiel in Python sein könnte.

Dies hält Flex-Code sauber, da es nur REST-Schnittstelle und Python (oder andere Sprache) den Rest der Arbeit implementiert. Sie können auch davon profitieren, Python als Schnittstelle zur SQLite-Datenbank zu verwenden, oder Sie können den gesamten Django als Webserver starten.

Der einzige Nachteil ist, dass der Server bereits auf localhost ausgeführt werden muss und auf einen Port hören (dh. 81). Sie können dies wahrscheinlich tun, indem Sie den Server beim Start des Systems starten.

Es ist nicht der beste Weg, aber in einigen Fällen könnte es Ihrem Projekt helfen, wie es für mich getan hat.

0

Wenn Sie in Mac OS X eine .app-Datei starten möchten, müssen Sie Folgendes für den Dateipfad schreiben. (Es sei angenommen, dass der Name der App ist 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); 

}