2013-02-16 4 views
1

현재 활성화 된 앱의 속성을 가져오고 싶습니다. 이것이 ScriptingBridge에서 가능해야한다는 것을 이해합니다. 그러나 이것은 sdef 파일을 생성하고 대상으로하려는 응용 프로그램의 프로젝트에서이 파일을 가져와야하는 것으로 보입니다. 모든 앱을 타겟팅하고 싶으므로 다른 방법이 있습니까? 시스템 환경 설정에 액세스sdef가없는 ScriptingBridge? (코코아)

예 :

SystemPreferencesApplication *systemPreferences = 
[SBApplication 
applicationWithBundleIdentifier:@"com.apple.systempreferences"]; 

활성 응용 프로그램의 속성에 액세스하는 또 다른 방법이 있다면, 공유 할하시기 바랍니다. (예 : 창 제목)

감사합니다.

+0

응용 프로그램의 "창 제목"? 응용 프로그램은 창문이 아닙니다. apps *에는 * windows, 각 응용 프로그램에 대한 하나 이상의 창이 있으며 각 창에는 제목이 있습니다. –

답변

0

나는 당신이 애플 스크립트를 실행한다고 가정합니다. 당신이 실행할 많은 코드를 가지고 있다면 스크립팅 브릿지가 좋다. 그러나 당신은 단지 작은 금액을 누른 다음 간단한 방법은 NSApplescript입니다.

tell application "System Events" 
    set theProcesses to processes 
    repeat with aProcess in theProcesses 
     tell aProcess to get properties 
    end repeat 
end tell 

그런 다음 당신이이 방법을 쓸 수있는이 애플 스크립트를 실행하기를 원한다면 예를 들어

...

NSString* cmd = @"tell application \"System Events\"\nset theProcesses to processes\nrepeat with aProcess in theProcesses\ntell aProcess to get properties\nend repeat\nend tell"; 
NSAppleScript* theScript = [[NSAppleScript alloc] initWithSource:cmd]; 
NSDictionary* errorDict = nil; 
NSAppleEventDescriptor* result = [theScript executeAndReturnError:&errorDict]; 
[theScript release]; 
if (errorDict) { 
    NSLog(@"Error:%@ %@", [errorDict valueForKey:@"NSAppleScriptErrorNumber"], [errorDict valueForKey:@"NSAppleScriptErrorMessage"]); 
    return; 
} 

// do something with result 
NSLog(@"result: %@", result); 
0

당신은 당신이 쿼리 자유롭게 조작 할 수있는 NSRunningApplication,해야

NSWorkSpace.sharedWorkspace.runningApplications; 

그 배열의 각 개체마다 현재 실행중인 응용 프로그램의 목록을 얻을 수 있습니다.

+0

그런 다음 질문자가 Scripting Bridge를 사용하여 이러한 응용 프로그램과 일반적으로 대화하는 방법은 무엇입니까? (저는 그가 창문이나 뭔가를 활성화하는 것과 같이 일반적으로 적용 할 수있는 것을 가지고 있다고 가정합니다.) –

+0

@PeterHosey 나는 그의 질문을 그가 Scripting Bridge에 대한 대안을 찾고 있음을 해석했습니다. – CodaFi