0

我正在尝试使用以下代码将选定的文本复制到 Cocoa 应用程序中的剪贴板:

NSString * copyStr =@"tell application \"System Events\" to key code 8 using command down";
copyScript = [[NSAppleScript alloc] initWithSource:copyStr];
NSAppleEventDescriptor *aDescriptor = [copyScript executeAndReturnError:&errorDict];

不幸的是,什么也没有发生。你知道可能是什么问题吗?

4

2 回答 2

1

以这种方式捕获目标应用程序选择以及它是否接受命令。

您需要将其设为活动应用程序。因为您正在使用这样的复制功能,所以您实际上不需要添加进程告诉块。但是有一些 GUI 命令不需要让目标应用程序处于活动状态,只需使用tell application process块即可。imo使用它是一个好习惯..

因此,如果您决定或需要在 a 中使用进程名称,tell application process您也可以使用NSString stringWithFormat:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {

    [self runApplescriptCopy:@"Safari"];

}



-(void)runApplescriptCopy:(NSString*) processName{


    NSDictionary * errorDict;
    NSString * copyStr = [NSString stringWithFormat:@"tell application \"%@\"  to activate \n tell application \"System Events\" to tell application process \"%@\" to  key code 8 using command down",processName ,processName ];
    NSAppleScript * copyScript = [[NSAppleScript alloc] initWithSource:copyStr];
    NSAppleEventDescriptor *aDescriptor = [copyScript executeAndReturnError:&errorDict];


}
于 2015-04-06T15:06:58.083 回答
0

您应该真正在块中添加进程名称。(这是即时写出来的)

tell app "processname" to activate
tell app  "System Events"
    tell app process "processname"
         key code 8 using command down
    end tell
end tell
于 2015-04-05T12:02:09.700 回答