2013-07-21 5 views
-3

Objective-C를 처음 사용하여 AppleScript를 Objective-C로 번역하려고합니다. AStranslate를 사용하여, 나는 오류를 Untranslated event 'sysoexec'AppleScript를 Objective-C로 번역

를 얻을 다음은 내가 번역 할 AppleScript로 :

do shell script "/System/Library/CoreServices/'Menu Extras'/User.menu/Contents/Resources/CGSession -suspend" 

내가 구글에서 검색 한은, 사람들은 NSTask이 명령을 실행하기 위해 터미널을 시뮬레이션하는 데 사용될 수있다. 몇 시간 동안 시도했지만 NSTask을 사용하는 방법을 알 수 없습니다. 누군가 AppleScript를 번역하는 데 도움을 줄 수 있습니까?

감사합니다, 내가 원하는 건이 터미널 명령을 실행하는 대신 applescript를 사용하는 것입니다. 내가 객관적 C의 첫번째 강의까지 여전히 나는

...

내가이 시도하고

@implementation hopethiswork 

- (IBAction)press:(id)sender { 

    NSTask *a = [[NSTask alloc] init]; 

    [a setLaunchPath:@"/System/Library/CoreServices/'Menu Extras'/User.menu/Contents/Resources/CGSession"]; 
    [a setArguments:[NSArray arrayWithObject:@"-suspend"]]; 
    [a launch]; 

} 
@end 

답변

2
NSTask *a = [[NSTask alloc] init]; 
[a setLaunchPath:@"/System/Library/CoreServices/'Menu Extras'/User.menu/Contents/Resources/CGSession"]; 
[a setArguments:[NSArray arrayWithObject:@"-suspend"]]; 
[a launch]; 
+0

가 [릴리스]를 잊지 마세요 작동하는 것 같다하지 않는다; ARC를 사용하지 않는 경우 – regulus6633

+0

Parag의 대답은 올바른 것입니다 : NSTask를 사용하십시오. OP는 ASTranslate가 무엇인지에 대해 혼란스러워합니다. AppleScript의 _application commands_를 appscript 구문으로 변환하기위한 도구입니다. 완전한 AS-> ObjC 코드 번역기는 아니며 단지 AS가 보낸 Apple 이벤트를 감지하여 다시 포맷합니다. 스크립트 작성 추가 (OSAX) 명령이거나 다른 코드를 변환하지 않으므로 '쉘 스크립트 수행'을 변환하지 않습니다. 어쨌든, 코코아는 이미 ASA가 OSAXen을 사용하는 일종의 작업을 위해 훨씬 우수한 API를 포함하고 있습니다. 나는 OP가 ObjC/Cocoa에 대한 소개 책을 얻고 그것으로 시작한다고 제안한다. – foo

+0

고마워, 내가 원하는 건이 터미널 명령을 실행하는 버튼이 있어야합니다. –