有沒有辦法通過編程的方式在我的應用程序中打開Finder的「獲取信息」窗口?如何打開文件/目錄獲取信息窗口?
回答
使用一些AppleScript的,它是很容易的:
set macpath to POSIX file "/Users/rross/test.applescript" as alias
tell application "Finder" to open information window of macpath
有沒有一種方法可以讓它不帶applescript?)簡單地說,我從來沒有使用過applescript – Kira 2012-04-06 19:34:26
這是否會顯示面板內應用程序,因爲OP想要?我不是AppleScript的人,但是這不只是調用Finder中的面板? – 2012-04-06 19:34:30
@ConradShultz嗯我開始我的回答之前,原來的帖子上添加評論。而且,Kira,applescript很容易處理,做一些谷歌搜索,你應該能夠找到如何在自己的應用程序中執行applescript。 – 2012-04-06 19:35:49
AFAIK沒有API來獲取信息面板中的應用內展示。 (我歡迎這方面的更正。)想到的最接近的是通過快速瀏覽API提供的preview panel。
我認爲您需要構建自己的所有信息都可以通過NSWorkspace和NSFileManager類獲得。
當然,我可以讓我的窗戶,但我不想「重新發明輪子」,如果這已經對我做了 – Kira 2012-04-06 19:39:30
在這種情況下,我認爲你可能不得不。我敢打賭,你並不孤單 - 也許可以考慮將你的結果發佈到GitHub上? – 2012-04-06 19:42:05
還有一個簡單的解決方案,你可以在蘋果的「照片搜索」項目中看到。
以下是可用於根據示例顯示單個文件的「獲取信息」窗口的代碼。
- (void)infoButtonAction:(NSOutlineView *)sender {
// Access the row that was clicked on and open that image
NSInteger row = [sender clickedRow];
SearchItem *item = [resultsOutlineView itemAtRow:row];
// Do a "reveal" in finder
if ([item filePathURL]) {
NSPasteboard *pboard = [NSPasteboard pasteboardWithUniqueName];
[pboard declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil];
[pboard setString:[[item filePathURL] path] forType:NSStringPboardType];
NSPerformService(@"Finder/Show Info", pboard);
}
}
我進一步修改了代碼按我的需要,以示對多個文件的對話框如下:
NSPasteboard *pboard = [NSPasteboard pasteboardWithUniqueName];
[pboard declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil];
NSMutableArray *fileList = [NSMutableArray new];
//Add as many as file's path in the fileList array
for(FileItem *item in fileItems) {
[fileList addObject:[[item.filePath filePathURL] path]];
}
[pboard setPropertyList:fileList forType:NSFilenamesPboardType];
NSPerformService(@"Finder/Show Info", pboard);
希望,這將幫助,並通知你,這將與沙箱應用程序在工作獅子和後來。
您使用剪貼板來存儲文件?但是當用戶點擊CMD V時,也會粘貼我們請求的「Get Info」文件? 如果是這樣,在獲取信息之後從文件夾中刪除文件(也出於內存原因?) – 2012-11-19 19:07:03
當然,在NSPerformService調用某些延遲之後,您可以根據需要從剪貼板中刪除文件。 – AmitSri 2012-11-22 11:59:43
我用這個代碼開口一個文件 「獲取信息」 窗口
NSPasteboard *pboard = [NSPasteboard pasteboardWithUniqueName];
[pboard declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil];
NSString *path = [selectedDuplicateItem getFileItemPath];
[pboard setString:path forType:NSStringPboardType];
NSPerformService(@"Finder/Show Info", pboard);
但是,有一些bug。如果我的文件路徑包含一個空格,例如path = @「/ Users/alexanderyolkin/Downloads/DETest/Folder/LICENSE 2」,NSPerformService會打開兩個窗口「Get Info」 - 用於路徑和相同文件,不包含空格或文件夾。
因此,解決方案使用的是 [pboard setPropertyList:fileList forType:NSFilenamesPboardType];
而且代碼
NSPasteboard *pboard = [NSPasteboard pasteboardWithUniqueName];
[pboard declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil];
NSString *path = [selectedDuplicateItem getFileItemPath];
NSMutableArray *fileList = [NSMutableArray new];
[fileList insertObject:path atIndex:0];
[pboard setPropertyList:fileList forType:NSFilenamesPboardType];
NSPerformService(@"Finder/Show Info", pboard);
多數民衆贊成在工作完美
- 1. VB.net獲取窗口信息
- 2. 用AppleScript在Finder中打開「獲取信息」窗口(再次)
- 3. 獲取關於打開的新窗口的信息
- 4. GeoXML3 - 自動打開信息窗口
- 5. 如何獲取該文件仍然對ftp打開的信息
- 6. 如何獲取Linux中當前目錄下的文件信息
- 7. 如何打開或發送事件時獲取文件目錄?
- 8. 如何打開谷歌地圖上的所有信息窗口
- 9. 當目錄在.zip存檔時如何獲取目錄信息?
- 10. 如何從打開目錄列表的目錄中獲取文件?
- 11. 如何關閉信息窗口時,其他信息窗口打開谷歌地圖javascript
- 12. MonoTouch/MonoDevelop:打開xib文件時「沒有獲得項目信息」
- 13. 關於非點擊事件的打開信息窗口
- 14. 谷歌地圖信息窗口沒有打開點擊事件
- 15. 如何在NetBeans PLATFORM中打開「打開文件...」窗口?
- 16. 如何打開和提取VBA中多個文件的信息
- 17. 打開OPENFILENAME對話框時獲取媒體文件的信息
- 18. 獲取打開文件的所有診斷信息
- 19. 打開窗口並獲取其URL?
- 20. 獲取打開的窗口可可
- 21. 獲取打開的窗口列表C#
- 22. 單擊時關閉地圖信息窗口(如果打開)
- 23. 獲取文件的詳細信息,而不是打印目錄幫助
- 24. Applescript:在文件>打開窗口中獲取項目的絕對路徑
- 25. 如何從谷歌地圖信息窗口中獲取內容?
- 26. 如何從background_page獲取信息到彈出窗口?
- 27. 如何在項目中打開另一個窗口(Xcode窗口)?
- 28. Linux:獲取文件和目錄列表以及默認信息
- 29. 如何打開shell窗口輸出在python中打印實時調試信息
- 30. 打開一個新的窗口使用JavaScript從以前的窗口中獲取信息
只是要清楚:你要問切換到搜索和顯示實際Info面板,或者是你想在你的應用中顯示面板? – 2012-04-06 19:23:42
我想在我的應用程序中顯示面板 – Kira 2012-04-06 19:26:47