Установить положение кадра в приложении, запущенном в общей рабочей среде Mac OSX - PullRequest
1 голос
/ 28 сентября 2011

Я открываю приложение системных настроек из своего приложения. Я также хотел бы установить фрейм приложения так, чтобы он был выровнен с левой стороны моего приложения. Проблема в том, что я не знаю, как получить доступ к свойству фрейма приложения или запустить его в определенной точке.

Я использую NSWorkspace для его запуска, затем получаю экземпляр NSRunningApplication, который, я надеюсь, можно использовать для управления окном.

-(void)openPreferencesAndSetFrame;
{
    @try {
        BOOL success = [[NSWorkspace sharedWorkspace] openFile:@"/System/Library/PreferencePanes/Localization.prefPane"];
        if (success == YES)
        {
            NSArray *appArray = [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.apple.systempreferences"];
            if ([appArray count] > 0)
            {
                NSRunningApplication *sysPrefApp = [appArray objectAtIndex:0];
                //set frame here
            }
        }         
    } @catch (NSException *exception) {
        NSLog(@"%@", [exception description]);
    }
}

Ответы [ 2 ]

1 голос
/ 29 сентября 2011

После некоторых исследований, проб и ошибок я нашел решение. Как уже упоминалось, AppleScript способен выполнить эту работу.

-(void)openPreferencesAndSetFrame;
{
    @try {
        NSAppleEventDescriptor *theResult;
        NSDictionary *errorInfo;
        float posX = 100;
        float posY = 200;

        NSString *sourceStr = [NSString stringWithFormat:@"ignoring application responses\r\n tell application \"System Preferences\"\r\n activate\r\n end tell\r\n tell application \"System Events\"\r\n tell process \"System Preferences\"\r\n set position of window 1 to {%f, %f}\r\n end tell\r\n end tell\r\n end ignoring\r\n", posX, posY];
        NSAppleScript *theScript = [[NSAppleScript alloc] initWithSource:sourceStr];

        theResult = [theScript executeAndReturnError:&errorInfo];
        if (nil == theResult ) {        
            NSString *err = [NSString stringWithFormat:
                         @"Error %@ occured call: %@",
                         [errorInfo objectForKey:NSAppleScriptErrorNumber],
                         [errorInfo objectForKey:NSAppleScriptErrorBriefMessage]];

            NSRunAlertPanel(@"AttachAScript Error", err, @"ok", nil, nil);
        }                
    } @catch (NSException *exception) {
        NSLog(@"%@", [exception description]);
    }
}
0 голосов
/ 28 сентября 2011

Приложения не имеют свойства фрейма.Если вы хотите установить фрейм главного окна, вы можете сделать это с помощью AppleScript, либо через NSAppleScript, либо через скрипт-мостик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...