演示程序
testApp
通過(guò)在Script Editor中輸入以下腳本,來(lái)實(shí)現(xiàn)點(diǎn)擊testButton蝗肪。
tell application "testApp"
launch
clickTestButton
end tell
一、修改Info.plist
在Info.plist中新增兩個(gè)字段Scriptable
和Scripting definition file name
。
Scriptable
字段的值設(shè)置為YES
。
Scripting definition file name
設(shè)置為testApp.sdef
。
image.png
二瘫析、生成testApp.sdef
創(chuàng)建一個(gè).sdef的文件甘有,頭兩行輸入以下代碼:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd">
然后將核心內(nèi)容,放在后面:
<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
設(shè)置為clickTestButton
愈犹,這個(gè)對(duì)應(yīng)到AppleScript中的命令。
cocoa class
設(shè)置為ClickTestButton
,這個(gè)對(duì)應(yīng)到clickTestButton
命令所執(zhí)行的代碼徒恋。
三入挣、實(shí)現(xiàn)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
完成勋拟!
參考文獻(xiàn)
https://justinyan.me/post/3075
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ScriptableCocoaApplications/SApps_intro/SAppsIntro.html