2010-11-24 144 views
0

我試圖用Quicktime打開視頻文件,然後關閉它。視頻文件用[NSWorkspase openfile:path withapplication:@"Quick Time Player"]打開。但是,當我試圖關閉Quicktime窗口時,什麼都沒有發生。這是代碼。無法使用[NSWindow關閉]或[NSWindow performClose:(id)]關閉窗口(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]); 
    } 

如果任何人能幫助我,我將不得不承擔責任。

回答

0

這不起作用,因爲orderedWindows只從您的應用程序返回窗口。無法從另一個應用程序(如QuickTime Player)訪問NSWindow對象。

要做到這一點,你必須使用AppleEvents。有很多不同的方式發送它們,但最簡單的可能是ScriptingBridge。這是一個不錯的tutorial

+0

「orderedWindows」這個函數已經發送給我一個包含QuickTime播放器引用的NSWindows數組,因爲它來自於我自己的應用程序,我有用於QuickTIme的NSWindow對象,我只需要關閉它。對此有何想法? – Omayr 2010-11-24 10:04:27

1

嘿,我找到了解決方案,它可以很容易地通過蘋果腳本完成的,下面是腳本

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的窗口並最終關閉它。

+0

有一個更簡單的方法來做到這一點:`告訴應用程序「QuickTime Player」關閉(每個文件的名稱是「abc.mp4」)` – Sven 2010-11-25 08:55:14