2011-11-11 47 views
0

我想將閃存模塊生成的數據發送到Windows中的外部可執行文件。從我所瞭解的進程間通信中,我認爲在這種情況下使用管道是合適的。我正在使用Flash Professional CS5,並且在動作腳本中使用'trace'命令時,輸出將顯示在專業flash專業人士的輸出窗口中。我認爲Flash將數據傳輸到輸出窗口,如果是這樣的話,可以獲得該管道的句柄。有沒有一種方法可以在執行跟蹤命令時將flash播放器本身的輸出或事件上生成的數據直接寫入管道的緩衝區中。如何通過管道將數據從閃存播放器發送到外部可執行文件

請幫我一把。 在此先感謝。

回答

1

我做了一些使用Flash徽章,AIR應用程序的技巧。和C#控制檯應用程序.. 我們可以發送參數到AIR應用程序。從BADGE和接收它使用:

protected function onInit(event:FlexEvent):void{ 
    NativeApplication.nativeApplication.addEventListener(BrowserInvokeEvent.BROWSER_INVOKE, onBrowserInvoke);} 
protected function onBrowserInvoke(e:BrowserInvokeEvent):void{ 
    //reading args 
    var a:String = e.arguments[0]; 
    //Now we can run *.exe from windows using: 
    if(NativeProcess.isSupported) 
    { 
     var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo(); 
     nativeProcessStartupInfo.executable = File.applicationDirectory.resolvePath("ExecutableApp.exe"); 
     nativeProcessStartupInfo.arguments.push(a); 
     var process:NativeProcess = new NativeProcess(); 
     //dispatched when the process will be finished 
     process.addEventListener(NativeProcessExitEvent.EXIT,onProcessDone); 
     //run 
     process.start(nativeProcessStartupInfo); 
    } 
    else Alert.show("Native process are not supported\nPrinter settings may be wrong!"); 
} 

這是一個很長的路,但肯定有效!至少對我來說,它工作。

+0

感謝您的信息和代碼亞歷克斯。我其實是Actionscript編程的新手,對你的代碼的一些解釋會非常有幫助。當我點擊一個按鈕時,閃存模塊中的輸出命令就會生成。另外我的是一個獨立的模塊,所以我不會在我的情況下生成BrowserInvokeEvent。另外,當你使用「ExecutableApp.exe」時,你的意思是這是將由Flash打開的應用程序的名稱。 – user1041254

+0

如果是,應放置.exe文件的位置,並僅對AIR應用程序運行。在開始時,代碼在FlexEvent生成時開始工作。我如何根據需要進行修改。謝謝 – user1041254

+0

1)創建AIR徽章 - [教程](http://www.adobe.com/devnet/air/articles/badge_for_air.html) 它可以是一個簡單的網頁按鈕或一個大的應用程序,可以與服務器。 當您單擊按鈕時,AIR應用程序將運行並且BrowserInvokeEvent將在AIR應用程序內分派。 之後,您可以使用上面的代碼自由運行.exe應用程序。 2)創建AIR應用程序。 - [教程](http://help.adobe.com/en_US/air/html/dev/WSb2ba3b1aad8a27b060d22f991220f00ad8a-8000.html) Flash - > AIR - > EXE(* .exe可以放在任何你想要的地方) – Alex

相關問題