32

Adobe AIRアプリケーションのボタンを押して、インストールされているプログラムを実行したいと思います。たとえば、「StartWinamp」という名前のボタンがあります。これを押すと、Winamp.exeが直接起動するはずです...コマンドラインを実行したくないので、exeを起動するだけです。または...それは同じことですか?可能かどうか教えてください。

ありがとうございました。

4

10 に答える 10

66

AIR 2.0 では、次のことができるようになりました。

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

}

これを記述子ファイルに追加する必要もあります。

<supportedProfiles>extendedDesktop</supportedProfiles> 
于 2009-12-17T15:25:43.833 に答える
11

それを行う直接的な方法はありません。CommandProxyを試してください。

ブログ記事をよく読んでください。実際には、ネイティブ OS 実行可能ファイルと AIR アプリの 2 つの異なるプロジェクトを作成する必要があります。ネイティブ実行可能ファイルが AIR アプリケーションを起動します。次に、AIR アプリケーションは、OS レベルの要求を処理するために実行可能ファイルを要求します。

ソースをGoogle Codeからダウンロードし、サンプル C# exe 用の Visual Studio/Mono と AIR アプリケーション用の 2 つのプロジェクトを作成します。これは、前者の設定方法を説明するリンクです。

AIR アプリのメイン MXML ファイルで、次の操作を行う必要があります。

  • オブジェクトを作成し、CommandProxy接続検出、Command応答、およびエラー用にいくつかのイベント リスナーを追加します。

  • connect呼び出しを介してネイティブ exe に接続する

  • のイベント ハンドラーでconnect、新しいCommandegを作成し、それを (メソッドScreenshotCommand経由で) 実行します。CommandProxy.execute

... 以上です!

お役に立てれば。

于 2009-03-23T08:00:36.350 に答える
4

答えは 2 つの部分に分かれています。1 つは、本当に .exe ファイルを実行する必要がある場合、唯一の方法はコマンド プロキシを使用することです。個人的には、.Net/Mono で使用するのは少し大げさです。私は Mono を知りませんが、.NetAIR をインストールするようにユーザーに要求すると、ほぼすべてのユーザーが怖がって離れてしまいます。さらに、ユーザーに Mono をインストールするように依頼する場合は、UI を Mono で記述して、それで完了しないのはなぜでしょうか?

Ruby で簡単なコマンド プロキシを作成できます。これは、実際にはクロスプラットフォームで手間がかからず、約 5 分で済みます (コードが必要な場合は、ここにコメントしてください。投稿します)。起動後にプロセスを制御したい場合は、より真剣な取り組みになります。配布などはRubyの方がやりやすいと思います。

一方このアイデアをチェックしてください。Jeff は、AIR からの URL 要求を使用することを提案しています。基本的に、ブラウザが正しく解釈すれば準備完了です。コードは次のようになります

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

少しの創造性 (特に Mime タイプ) があれば、この 2 番目のソリューションは Winamp (たとえば、プレイリストなど) でも機能する可能性があると思います。

幸運を祈ります。質問に感謝します。これはおそらくだまされたものですが、Google はこれしか見つけられなかったので、あなたが勝ちました :)

于 2009-07-20T10:14:38.447 に答える
3

AIR2.0にはこの機能があります。

年末(2009年)までにベータ版でリリースされ、2010年前半に出荷される予定です。

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

ネイティブプロセスAPIAIR2 以降、開発者は、アプリケーションがローカルマシン上のネイティブアプリケーションを呼び出して通信できるようにするネイティブプロセスAPIにアクセスできるようになります。.airファイル形式のクロスプラットフォームの性質を維持するには、ネイティブプロセスAPIを利用するアプリケーションを、.exeや.dmgなどのネイティブインストーラーとしてデプロイする必要があります。AIRランタイムSDKには、基本的なネイティブインストーラーの生成のサポートが含まれます。

于 2009-11-09T23:10:23.073 に答える
3

私は FluorineFx があなたが望むことをすると思います: http://aperture.fluorinefx.com/?p=5

于 2009-08-05T13:56:22.477 に答える
1

このブログ投稿を参照してください:AIRからexeファイルを実行します

簡単な要約:

「本当に外部のexeファイルを実行する必要があり、問題を解決する他の方法がない場合は、AIRアプリケーションを起動する前に、ユーザーがその別のソフトウェアを実行していることを確認します。」

于 2009-03-23T02:23:00.047 に答える
1

現在、AIRでこれをネイティブに行う方法はありません。ただし、いくつかのオプションがあります。

  • シュウ
  • ローカルホストで実行されているRed5
  • ユーザーのマシンで実行されるサービスを作成し、ソケットを使用してそれに接続します。
于 2009-03-23T02:26:44.873 に答える
1

これを行う別の方法は、単純な Web サーバーをローカル マシンで (バックグラウンドで) 起動し、HTTPService を使用してそのメソッドを呼び出すことです。

バックグラウンド Web サーバーは、たとえば Python である可能性があります: http://fragments.turtlemeat.com/pythonwebserver.php

また、実行可能ファイルを起動して、AIR ではできない機能を提供できます。

これにより、REST インターフェイスと python (または他の言語) のみが残りの作業を実装するため、Flex コードがクリーンに保たれます。また、python を sqlite データベースへのインターフェイスとして使用したり、django 全体を Web サーバーとして起動したりすることもできます。

唯一の欠点は、サーバーが既に localhost で実行されている必要があり、いくつかのポート (つまり 81) をリッスンしている必要があることです。システムの起動時にサーバーを起動することで、おそらくこれを行うことができます。

これは最善の方法ではありませんが、場合によっては、私のようにプロジェクトに役立つ可能性があります。

于 2010-02-10T09:22:45.710 に答える
0

mac os x で .app ファイルを起動する場合は、ファイル パスに次のように記述する必要があります。(アプリ名は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);

}
于 2013-09-27T13:45:29.263 に答える