Adobe AIRアプリケーションからボタンを押して、インストールされているプログラムを実行したいのですが。たとえば、「Start Winamp」という名前のボタンがあります。これを押すと、Winamp.exeが直接起動するはずです...コマンドラインを実行したくないので、exeを起動したいだけです。それとも...同じですか?これが可能かどうか教えてください。
ありがとうございました。
それを行う直接的な方法はありません。 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
メソッドを使用)
... 以上です!
お役に立てれば。
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>
答えは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はこれを見つけただけなので、勝ちました:)
私はFluorineFxがあなたが望むことをすると思います: http://aperture.fluorinefx.com/?p=5
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には、基本的なネイティブインストーラーを生成するためのサポートが含まれます。
このブログ投稿を参照してください: AIRからexeファイルを実行
短い要約:
「外部exeファイルを実行する必要があり、問題を解決する方法が他にない場合は、AIRアプリケーションを起動する前に、ユーザーが別のソフトウェアを実行していることを確認します。」
これを行う別の方法は、ローカルマシンで(バックグラウンドで)単純なWebサーバーを起動し、HTTPServiceを使用してそのメソッドを呼び出すことです。
バックグラウンドウェブサーバーは、たとえば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);
}
または、単純な私のウェブサイトで新しいアプリケーションにカスタムインストーラーを作成する続きを読む
ボーナスのヒント:Enigma Virtual Boxは無料で、Application VirtualizationやBoxedApp PackerのようなExe-Packerに非常に適しているため、使用することをお勧めしますが、Enigma Virtual Boxに比べて非常に高額です。