2013-05-03 37 views
0

我被要求找出一種方法來關閉在主機上運行的應用程序,當我確定Flash應用程序正在瀏覽器中運行時,這似乎是一項艱鉅的任務,但我已經想到了一些可能的方法來實現這一點,我想問問哪種方法是最好的。從閃存暫時關閉應用程序

我看到這些的方式是我的可能性

  1. 具備閃光燈應用程序創建的cookie,另一個程序檢查,如果檢測到這個程序在計算機上運行後會再關閉其他應用程序。
  2. 有一個程序運行在監聽特定端口的主機上,以及何時發送正確的字符串fx。通過使用動作套接字,程序會暫時關閉應用程序。
  3. 創建程序嗅探網絡流量,如果正在下載swf,請暫時關閉其他應用程序(這似乎是最不可行的方法,甚至不能確定這將有可能有效)

我需要這樣做的原因是因爲Flash應用程序需要訪問主機的網絡攝像機,該主機計算機兼作運動檢測攝像機,這意味着在運動檢測軟件運行時攝像機將被鎖定。所以我需要關閉運動檢測軟件,在閃光燈中拍攝一張照片,保存照片並再次啓動運動檢測。

我錯過了一些超級簡單的方法嗎?你會怎麼做到這一點?預先感謝您的答案。

回答

0

TBH我不認爲你會在這一點,除非你把它創建爲AIR應用程序(當然,我並沒有花太多的腦力上想出的解決方案)取得成功, 。 Flash Player非常限制你可以做什麼,不可以做什麼。 ExternalInterface是被視爲過時的FSCommand的替換,BTW。它允許你通過AS與swf容器進行通信。 JS(也許VBScript?)只有。

但是,如果事實證明您需要創建Air應用程序,則可以使用NativeProcess,它允許您在主機上運行應用程序。舉例來說,如果你想運行一個Java的.jar你可以這樣做:

var javaExecutable : File = new File(); 
javaExecutable.nativePath = '/path/to/java/'; 

var processArguments : Vector.<String> = Vector.<String>([ 
    '-jar', 
    '/path/to/jar/', 
    'foo' 
]); 

var process : NativeProcessStartupInfo = new NativeProcessStartupInfo(); 
process.executable = javaExecutable; 
process.arguments = processArguments; 

var shell : NativeProcess = new NativeProcess(); 
shell.addEventListener(NativeProcessExitEvent.EXIT, onExitEvent); 
shell.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onStdOutputDataEvent); 
shell.start(process); 

非常重要的注意事項:(重點煤礦)

NativeProcess類及其功能只適用到安裝了本機安裝程序(擴展桌面配置文件應用程序)的AIR應用程序

+0

感謝您的意見;)考慮到了這一點,我們最終同意採用另一種不使用閃光燈的方法。 – 2013-05-09 17:59:40

0

您還可以使用fscommand()函數將消息傳遞給Director 或Visual Basic中的Visual C++和可承載 ActiveX控件的程序。

FSCommand