如何讓你的Cocoa程序支持AppleScript

演示程序

testApp

通過在Script Editor中輸入以下腳本,來實現點擊testButton。

tell application "testApp"
    launch
    clickTestButton
end tell

一、修改Info.plist

在Info.plist中新增兩個字段ScriptableScripting definition file name。
Scriptable字段的值設置為YES。
Scripting definition file name設置為testApp.sdef。

image.png

二、生成testApp.sdef

創(chuàng)建一個.sdef的文件,頭兩行輸入以下代碼:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd">

然后將核心內容,放在后面:

<dictionary title="Standard Terminology">
    <suite name="testApp Suite" code="TAAS" description="testApp Application Suite">
        <cocoa name="testApp"/>
        <command name="clickTestButton" code="clickbtn" description="click the testButton">
        <cocoa class="ClickTestButton"/>
        </command>
    </suite>
</dictionary>

其中,command name設置為clickTestButton,這個對應到AppleScript中的命令。
cocoa class設置為ClickTestButton,這個對應到clickTestButton命令所執(zhí)行的代碼。

三、實現ClickTestButton類

首先新建ClickTestButton類繼承于NSScriptCommand。

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface ClickTestButton : NSScriptCommand

@end

NS_ASSUME_NONNULL_END
#import "ClickTestButton.h"
#import "AppDelegate.h"

@implementation ClickTestButton

- (id)performDefaultImplementation{
    [super performDefaultImplementation];
    AppDelegate *appDelegate = (AppDelegate*)NSApp.delegate;
    [appDelegate testButton1:nil];
    return nil;
}

@end

完成!

參考文獻
https://justinyan.me/post/3075
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ScriptableCocoaApplications/SApps_intro/SAppsIntro.html

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容