无法使用[NSWindow close]或[NSWindow performClose:(id)]关闭窗口(QuickTime)

时间:2010-11-24 07:36:11

标签: objective-c nswindow quicktime

我正在尝试使用Quicktime打开视频文件,然后将其关闭。 [NSWorkspase openfile:path withapplication:@"Quick Time Player"]视频文件正常打开。但是,当我试图关闭Quicktime窗口时,没有任何反应。这是代码。

NSMutableArray *titles = [[NSApplication sharedApplication] orderedWindows];
int i;
id obj;
NSMutableString *mystring;
for(i=0; i< [titles count]; i++)
    {
    obj = (NSWindow*)[titles objectAtIndex:i];
    mystring = [obj title];
    if([mystring isEqualToString:@"PREVIEW"] == 1 )
    {
    [obj close];
    }
    //NSLog("Title : %@\n",(NSString*)[obj title]);
    }

如果任何人能帮助我,我将不得不承担责任。

3 个答案:

答案 0 :(得分:1)

您需要使用NSWorkspaceNSRunningApplication来执行此操作。

这里给出了同样问题的一个例子:

NSRunningApplication - Terminate

答案 1 :(得分:1)

嘿我发现了解决方案,可以通过Apple Scripting轻松完成,下面是脚本

tell application "QuickTime Player"
    repeat with d in documents
         if name of d is "abc.mp4" then 
             close d
         end if
    end repeat 
end tell
它简单易行。此脚本会出错,但它会执行所需的任务。它将首先获取应用程序QuickTIme Player的控制权,然后迭代以找到标题为abc.mp4的窗口,并最终将其关闭。

答案 2 :(得分:0)

这不起作用,因为orderedWindows仅返回应用程序中的窗口。无法从QuickTime Player等其他应用程序访问NSWindow对象。

要做到这一点,你必须使用AppleEvents。发送它们的方法有很多种,但最简单的方法可能是ScriptingBridge。这是一个非常好的tutorial