web-dev-qa-db-ja.com

プログラムを実行するAdobe AIR

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

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

32
Manny Calavera

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

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

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

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

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

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

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

... 以上です!

お役に立てれば。

11
dirkgently

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> 
65
JD Isaacks

答えは2つの部分に分かれています。 1つ目は、本当に.exeファイルを実行する必要がある場合、コマンドプロキシを使用することだけです。個人的には、.Net/Monoで使用するのは少しやり過ぎです。 Monoはわかりませんが、ユーザーに.Netのインストールを要求すると、AIRはほぼすべてのユーザーを怖がらせます。さらに、ユーザーにMonoをインストールするように依頼する場合は、UIをMonoで記述して、それで完了しませんか?

簡単なコマンドプロキシをRubyで書くことができます。これは実際にはクロスプラットフォームであり、約5分で手間がかかりません(コードをここでコメントさせたい場合は、私が書いただけです。投稿します。起動後にプロセスを制御したい場合は、より真剣な取り組みになります。配布などの場合は、Rubyのほうが簡単だと思います。

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

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

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

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

4
Dan Rosenstark

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

3
user106085

AIR 2.0にはこの機能があります。

年末(2009年)にはベータ版が登場し、2010年前半に出荷される予定です。

http://blogs.Adobe.com/air/2009/10/previewing_Adobe_air_2_at_adob.html

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

3
user207377

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

短い要約:

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

1
Assaf Lavie

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

  • シュウ
  • Red5 localhostで実行中
  • ユーザーのマシンで実行するサービスを作成し、 sockets を使用してそれに接続します。
1
Rhys Causey

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

バックグラウンドウェブサーバーは、たとえばpythonの場合があります: http://fragments.turtlemeat.com/pythonwebserver.php

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

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

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

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

1
Redliner

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

}
0
umut demirel

または、単純な私のウェブサイトで新しいアプリケーションにカスタムインストーラーを作成する続きを読む

http://board.flashkit.com/board/showthread.php?834579-Embed-exe-file-from-swf-to-write-to-local-directory

ボーナスのヒント:Enigma Virtual Boxは無料で、Application VirtualizationやBoxedApp PackerのようなExe-Packerに非常に適しているため、使用することをお勧めしますが、Enigma Virtual Boxに比べて非常に高額です。

0
SourceSkyBoxer