2013-09-01 6 views
2

파이썬 스크립트를 작성하고 Mac Finder에서 서비스 항목으로 추가하려고합니다. Automator 창을 열고 설정할 수 있음을 안다. 하지만 명령 줄 방식이 필요합니다. 나는 오랫동안 방법을 검색하고 아무 것도 얻지 못합니다 ...CLI를 사용하여 Mac Finder에서 서비스 추가

이것을 달성하는 방법을 아는 사람이 있습니까? 고마워.

+1

를 참조하면 "실행 쉘 스크립트"라는 자동화의 액션을 사용하고, 언어로 파이썬을 선택할 수 있습니다. 이게 너를 위해 일하지 않니? Mac Finder에서 서비스를 이용할 수 있기를 원하십니까?귀하의 서비스는 정확히 무엇을해야합니까? – Kaydell

+0

"Finder에 서비스로 스크립트 추가"를 원한다면 "명령 행 인터페이스"에서이 작업을 수행 할 수 있습니다. –

+0

다음은 서비스를 더 잘 이해하려고 시도해 온 다른 링크와의 링크입니다. http://www.learnbymac.com/wiki/index.php?title=Services_Menu – Kaydell

답변

0

여기 내 댓글과 함께 할 것입니다 매우 기본적인 예이다려면 (파이썬, 사과 스크립트 또는 내장 CLI 도구를 사용하여 나에게도 가능).

서비스가 등록되는 방법을 보여주는 것입니다. 심지어 자동화 자도 등록되어 있습니다. 그리고 왜 내가 네가 원하는 것을 할 수 없을지 모른다.

Xcode를 사용하여 새 프로젝트를 만들었습니다. 하는 .m 파일에

코드 :

// 
// AppDelegate.m 
// testServiceExample 
// 
// Created by Mark Hunte on 02/09/2013. 
// Copyright (c) 2013 Mark Hunte. All rights reserved. 
// 

#import "AppDelegate.h" 

@implementation AppDelegate 


- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    [NSApp setServicesProvider:self];//Registers a given object as the service provider. 
    NSUpdateDynamicServices();//Causes the services information for the system to be updated. 
} 



-(void) runAService:(NSPasteboard *)pboard userData:(NSString *)userData error:(NSString **)error { 

    if ([[pboard types] containsObject:NSFilenamesPboardType]) { 
     NSArray *files = [pboard propertyListForType:NSFilenamesPboardType]; 


     NSLog(@" files %@", files); 

    } 

    [[NSApplication sharedApplication] terminate:nil]; 
    } 

@end 

참고 : 나는 응용 프로그램 정보 - PLIST

enter image description here

<array> 
    <dict> 
     <key>NSMenuItem</key> 
     <dict> 
      <key>default</key> 
      <string>Service Test</string> 
     </dict> 
     <key>NSMessage</key> 
     <string>runAService</string> 
     <key>NSSendTypes</key> 
     <array> 
      <string>public.item</string> 
     </array> 
    </dict> 
</array> 
로 어레이를 추가 한 다음
[NSApp setServicesProvider:self];//Registers a given object as the service provider. 
     NSUpdateDynamicServices();//Causes the services information for the system to be updated. 

<string>Service Test</string> 메뉴는 서비스가 시스템에 서비스를 등록합니다

응용 프로그램의 첫 번째 실행 (더블 클릭에서 작동 응용 프로그램

<string>public.item</string> 객체에서 실행

<string>runAService</string> 방법을 표시됩니다. 하지만 키보드 바로 가기에서 선택되어 있는지 확인합니다.

NSLog의 결과는 디폴트가를 보유하고있는 PLIST 파일에 기록처럼 뭔가를 사용하여 항목을 추가 할 수 있다면 그래서 심지어 파일 경로를


을 나열합니다되는 console.app에서 볼 수 있습니다 시스템에 등록 된 응용 프로그램은 서비스를 우선적으로 사용합니다. 나는 위의 어떤 것도없이 실제로 아무것도 작동하지 않을 것이라고 생각합니다.

확실히 Automator 응용 프로그램은 plist 파일과 runAservice 메서드에 올바른 정보를 쓸 수 있습니다.

서비스의 실제 방법 플로 이름입니다 runWorkflowAsService.

생각해보십시오. 명령 행에서 앱을 작성하고 빌드 할 수 있습니다. 그리고 그것은 당신에게 파이썬을 실행 시키십시오. 그러나 그것은 갈 많은 어려움입니다. 서비스에 대한 추가 정보를 원하시면

이 사과 문서 here