演示程序

testApp
通過在Script Editor中輸入以下腳本,來實現點擊testButton。
tell application "testApp"
launch
clickTestButton
end tell
一、修改Info.plist
在Info.plist中新增兩個字段Scriptable和Scripting 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