2011-09-07 160 views
0

这是我的原始脚本。它会返回Safari的当前网址如何使用[[NSAppleScript alloc] initWithSource来检查应用程序是否正在运行:

NSAppleScript *scriptURL= [[NSAppleScript alloc] initWithSource:@"tell application \"Safari\" to return URL of front document as string"]; 

如果我想在查询脚本返回URL之前检查Safari浏览器是否打开,该怎么办?

这是我在的AppleScript编辑器怎么办。所以这个脚本会检查是否Safari浏览器正在运行或不..这适用于AppleScript的编辑

tell application "Safari" 
     if it is running then 

      //return url code here 
     end if 
    end tell 

我现在需要的是马上叫从使用我的可可应用程序脚本“[[NSAppleScript页头] initWithSource:”

我已经试过,但它不工作

NSAppleScript *scriptURL= [[NSAppleScript alloc] initWithSource:@"tell application \"Safari\" if it is running to return URL of front document as string"]; 
+2

你有看'NSRunningApplication'?这将给你所需的信息,而不诉诸于AppleScript。 –

回答

4

为什么将这项工作?这是坏的AppleScript语法。

有办法可以做到这一点,而不诉诸于AppleScript,但它现在会做。

NSString *source = @"tell application \"Safari\"\nif it is running then\nreturn URL of front document as string\nend if\nend tell"; 

您还可以通过将一个接一个,这使得它更易于阅读分手字符串常量:您可以通过使用C转义序列\n插入新行有一个嵌入的脚本多行:

NSString *source = 
    @"tell application \"Safari\"\n" 
     "if it is running then\n" 
      "return URL of front document as string\n" 
     "end if\n" 
    "end tell"; 

C编译器会将这些字符串常量粘在一起成为一个NSString对象。

1

OP的AppleScript单行代码是错误的。在这个的AppleScript的文本应该工作:

NSAppleScript *scriptURL= [[NSAppleScript alloc] initWithSource:@"tell application \"Safari\" to if it is running then return URL of front document as string"]; 
0

由于dougscripts(+1)所指出的那样,但我想让为何NSAppleScript内的一个衬垫AppleScript的语法OP试过没有工作,这一点更清晰。

而且说实话,我确实认为这失去了三个减为两个

的OP的NSAppleScript代码编辑:

NSAppleScript *scriptURL= [[NSAppleScript alloc] initWithSource:@"tell application \"Safari\" if it is running to return URL of front document as string"]; 

没有工作,因为语法是错误的。

的正确语法应该是:

NSAppleScript *scriptURL= [[NSAppleScript alloc] initWithSource:@"tell application \"Safari\" to if it is running then return URL of front document as string"]; 

有以下粗体所示的代码的部分中的两个的变化。

\ “Safari浏览器\” 如果正在运行然后返回URL

相关问题