Проверка активности Finder - PullRequest
       21

Проверка активности Finder

0 голосов
/ 27 октября 2011

Можно ли каким-то образом проверить (программно), занят ли искатель, например, копированием файлов?Я не хочу проверять это на уровне файлов;В общем, я просто хочу знать, занят ли копировщик поиском.

Я думаю, что это невозможно, но здесь всегда стоит попробовать :)

1 Ответ

2 голосов
/ 28 октября 2011

К сожалению, Apple не предоставляет никаких методов для получения такого рода информации.
Однако есть несколько «грязных» способов, которые могут работать, например, с помощью AppleScript.

Следующий скрипт обнаруживает, активен ли «окно копирования» в Finder:
(Быстро написано и не полностью проверено, но, кажется, работает отлично.)

set thestatus to "not copying"
tell application "System Events"
    set theList to get the title of every window of process "Finder"
    repeat with theItem in theList
        if theItem contains "Copy" then
            set thestatus to "copying"
        end if
    end repeat
end tell
thestatus

Наконец, используйте NSAppleScript для запуска AppleScript из Objective-C

NSString *theScript = @"set theStatus to \"not copying\"\n"
"tell application \"System Events\"\n"
"set theList to get the title of every window of process \"Finder\"\n"
"repeat with theItem in theList\n"
"if theItem contains \"Copy\" then\n"
"set theStatus to \"copying\"\n"
"end if\n"
"end repeat\n"
"end tell\n"
"theStatus";

NSDictionary *errorInfo = nil;
NSAppleScript *run = [[NSAppleScript alloc] initWithSource:theScript];
NSAppleEventDescriptor *theDescriptor = [run executeAndReturnError:&errorInfo];

if ([[theDescriptor stringValue] isEqualTo:@"copying"]) {
    NSLog(@"Finder is copying");
} else {
    NSLog(@"Finder is not copying");
}
...