2017-06-06 26 views
0

Flash CCでAIRアプリケーションを構築しているので、ネイティブプロセスを使用できます。私は完全なプロジェクトにそれを組み込む前に、それがうまくいくかどうかを確認するための小さなテストプロジェクトを作成しました。私はWindowsでそれを試して、それは動作しませんでした。私はMacに切り替えて、そこで動作するようになった。AIR Native ProcessはMacでは動作しますが、Windowsでは動作しません

ネイティブプロセスは、キーを押すとトリガーされます。このファイルはAirパッケージではなく、Windowsインストーラとして公開されています。私はxmlファイルにextendedDesktopを含めるようにしました。私はファイルパスをダブルチェックしました。これがうまくいかない理由が他にありますか?

package { 

    import flash.display.MovieClip; 
    import flash.filesystem.File; 
    import flash.events.KeyboardEvent; 
    import flash.desktop.NativeProcess; 
    import flash.desktop.NativeProcessStartupInfo; 


    public class Main extends MovieClip { 

     var exe:File = new File("C:\Windows\System32\notepad.exe"); 
     var nativeProcess:NativeProcess = new NativeProcess(); 
     var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo(); 
     var args:Vector.<String> = new Vector.<String>(); 

     public function startProcess(event:KeyboardEvent):void 
     { 
      if (event.keyCode == 65) { 
       nativeProcessStartupInfo.executable = exe; 
       args.push("C:/Users/Tristan/Documents/TVCR/airTestFile.rtf"); 
       nativeProcessStartupInfo.arguments = args; 
       nativeProcess.start(nativeProcessStartupInfo); 
      } 
     } 
    } 
} 
+0

それが "テストムービー" モードで動作しますか?スクリプトはうまくいくように見えるので、デバッグをすることをお勧めします。 keypressがイベントをトリガーするようなログ情報を出力するためのテキストフィールドを作成します。また**例外を** ** ** ** catch ** ** NativeProcess.start **にします。 – Organis

+0

ネイティブプロセスは「ムービープレビュー」モードでは機能しません。これらは、Windowsインストーラを公開したときにのみ機能します。ログ情報のテキストフィールドを作成する方法がわかりません。チュートリアルを教えていただけますか? – browntastic

+0

申し訳ありませんが理解できません... ** MovieClip **をライブラリに作成する方法、** TextField **をデザインする方法、メインタイムラインに追加する方法はわかりません。 – Organis

答えて

0

デバッグ情報の出力方法。キーボードイベントが実際にハンドラメソッドをトリガする場合、次のコードはいくつかのメッセージを表示します。私が使用していたファイルパスが正しい形式ではありませんでしたようだ

try 
{ 
    nativeProcess.start(nativeProcessStartupInfo); 
    LogText.appendText("\n\nThe process has been started without exceptions."); 
} 
catch (fail:Error) 
{ 
    // LogText:TextField 
    LogText.appendText("\n\n" + fail.getStackTrace()); 
} 
+0

これはキーボードイベントの答えを返しましたが、try引数とcatch引数は何も返しませんでした。 – browntastic

+0

@browntastic次に、** try ** ... ** catch **ブロックの下に他のものを置くと、それ以外の場所を知ることができます。 – Organis

+0

「1120:未定義プロパティのアクセスに失敗しました」というエラーが表示されます。出版するとき。 – browntastic

0

:どのように出力すると例外を診断

public function startProcess(event:KeyboardEvent):void 
{ 
    // LogText:TextField 
    LogText.appendText("\n\nKey Pressed: " + event.keyCode); 
} 

C:\Windows\System32\notepad.exe 

C:\\Windows\\System32\\notepad.exe 
0

である必要があり、Windows用のファイル・パスは、単一のバックスラッシュはエスケープとして解釈されますので、「\」二重のバックスラッシュを使用する必要があります。

特に、実行可能ファイルへのパスを作成する必要がある場合や、WindowsとMacになるものを作成する場合は、Windowsの場合は「\」、Mac/Windowsの場合は「/」を使用するため、File.separatorを使用します。 Linuxの

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/filesystem/File.html#separator

関連する問題