簡體   English   中英

如何在Java程序中接收和響應Apple Events?

[英]How do I receive and respond to Apple Events in a Java program?

我想讓我的Java swing應用程序具有applescriptable功能。

我不是在嘗試僅響應預定義的事件,例如打開,打印等。

如果AppleEvents通過偵聽器界面出現,那將是最好的選擇。

編輯:對我對Apple Events的理解的一些解釋可能有助於證明我並不懈怠。 :-)我在這里編寫了代碼,演示了如何響應許多預定義的事件:

https://github.com/joelkevinjones/snippets/blob/e7b10128156bcc213f8c24dbda464ad09a8a1e33/Java/AppleSpecific/AppleLookAndFeelDemo.java

Apple Events使用非Java界面交付給常規應用程序。 據我所知,沒有提供用於獲取這些事件的Java方法。 Apple Event技術包括編寫“術語”文件,這些文件以人類可讀的形式描述應用程序響應的事件以及用於以編程方式構建Apple Events的四個字母的代碼。 創建javax.script.ScriptEngine的實例不能滿足我的要求。 它允許Java程序啟動對AppleScript的調用,但不允許AppleScript調用Java程序。

為了澄清,是否已經有編寫的庫或示例顯示如何:

  1. 將某些Java方法標記或注冊為AppleScript方法和/或類作為AppleScript類為“可見”。

  2. 如果沒有聲明式方法,是否存在Java方法來捕獲發送到Java應用程序的Apple Events? 如果僅以字節數組形式返回事件,則可以將事件解析並轉換為Swing事件,並且可以使用相反的過程將結果返回給發送Apple事件的應用程序。

  3. 還是需要編寫許多JNI代碼?

實現com.apple.eawt包中可用的Application和ApplicationAdaptor類。 通過在ApplicationAdaptor類中實現事件處理程序,您的應用程序可以生成和處理基本事件,例如Print和Open。 有關這兩個類的信息,請參見《 J2SE 5.0 Apple Extensions Reference》。

Java SE 6還使您能夠使用javax.script API調用AppleScript。 下面的清單提供了此功能的示例實現。

public static void main(String[] args) throws Throwable {
    String script = "say \"Hello from Java\"";

    ScriptEngineManager mgr = new ScriptEngineManager();
    ScriptEngine engine = mgr.getEngineByName("AppleScript");
    engine.eval(script);
}

來源: http//qery.us/3xr

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM