Adobe AIRアプリケーションのボタンを押して、インストールされているプログラムを実行したいと思います。たとえば、「StartWinamp」という名前のボタンがあります。これを押すと、Winamp.exeが直接起動するはずです...コマンドラインを実行したくないので、exeを起動するだけです。または...それは同じことですか?可能かどうか教えてください。
ありがとうございました。
Adobe AIRアプリケーションのボタンを押して、インストールされているプログラムを実行したいと思います。たとえば、「StartWinamp」という名前のボタンがあります。これを押すと、Winamp.exeが直接起動するはずです...コマンドラインを実行したくないので、exeを起動するだけです。または...それは同じことですか?可能かどうか教えてください。
ありがとうございました。
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>
それを行う直接的な方法はありません。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
... 以上です!
お役に立てれば。
答えは 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 はこれしか見つけられなかったので、あなたが勝ちました :)
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には、基本的なネイティブインストーラーの生成のサポートが含まれます。
私は FluorineFx があなたが望むことをすると思います: http://aperture.fluorinefx.com/?p=5
このブログ投稿を参照してください:AIRからexeファイルを実行します
簡単な要約:
「本当に外部のexeファイルを実行する必要があり、問題を解決する他の方法がない場合は、AIRアプリケーションを起動する前に、ユーザーがその別のソフトウェアを実行していることを確認します。」
これを行う別の方法は、単純な Web サーバーをローカル マシンで (バックグラウンドで) 起動し、HTTPService を使用してそのメソッドを呼び出すことです。
バックグラウンド Web サーバーは、たとえば Python である可能性があります: http://fragments.turtlemeat.com/pythonwebserver.php
また、実行可能ファイルを起動して、AIR ではできない機能を提供できます。
これにより、REST インターフェイスと python (または他の言語) のみが残りの作業を実装するため、Flex コードがクリーンに保たれます。また、python を sqlite データベースへのインターフェイスとして使用したり、django 全体を Web サーバーとして起動したりすることもできます。
唯一の欠点は、サーバーが既に localhost で実行されている必要があり、いくつかのポート (つまり 81) をリッスンしている必要があることです。システムの起動時にサーバーを起動することで、おそらくこれを行うことができます。
これは最善の方法ではありませんが、場合によっては、私のようにプロジェクトに役立つ可能性があります。
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);
}