Automator에서 작성된 URL 핸들러 애플리케이션에서 클릭 한 URL에 액세스하는 방법


14

현재 OS X에서 기본 URL 처리 동작을 수정하려고합니다. 웹 브라우저 외부의 링크를 클릭 할 때이 URL을 기본 웹 브라우저에서 열지 않고 대지에 복사하려고합니다 (예 : , Skype 대화에서 링크를 클릭하면 Firefox (현재 기본 웹 브라우저)에서 URL을 여는 대신이 URL을 OS X 페이스트 보드에 복사해야합니다.

솔루션에 대해 생각했지만 현재 구현할 수 없습니다. URL을 보드에 전송하는 응용 프로그램을 만들고이 응용 프로그램을 기본 웹 브라우저로 설정할 수 있다면 목표를 달성 할 수 있습니다.

Shell 명령을 실행 pbcopy하고이 응용 프로그램을 기본 웹 브라우저로 설정 한 Automator로 응용 프로그램을 만들었지 만 예상 결과를 얻지 못했습니다. 몇 가지 테스트를했는데 링크를 클릭하면 응용 프로그램이 실행되고 있음을 확인할 수 있지만 URL을 응용 프로그램 / 쉘 스크립트로 전달할 수는 없습니다. 나는 stdin이나 전달 된 논쟁을 모두 시도했지만 성공하지 못했습니다.

Automator로 만든 응용 프로그램이 클릭 한 URL을 검색하여 pbcopy해당 응용 프로그램이 URL에 대한 (기본) 처리기로 설정되어있는 경우 보낼 수 있는 방법이 있습니까?

또는 입력을 가져 와서 Automator보다 판지에 넣는 가짜 웹 브라우저를 만드는 더 좋은 방법이 있습니까? 또는 사용자 정의 응용 프로그램 / 스크립트없이 목표를 달성 할 수있는 다른 방법이 있습니까?


완벽한 솔루션이 아니기 때문에 이것을 대답으로하지는 않지만 시작입니다. rubicode.com/Software/RCDefaultApp 을 사용하여 자동화 응용 프로그램을 기본 브라우저로 설정했습니다. Automator에는 클립 보드에 복사 작업이 있습니다. 자동화 앱에 텍스트 입력을 할 수 없습니다.
penguinrob

Ditto이지만 Choosy를 사용했습니다. 상당한 양의 테스트를 수행했으며 다음을 발견했습니다. 1) Automator 앱이 실행됩니다. 2) 입력이 전혀없는 것 같습니다. 3) Ergo는 브라우저에 "링크"가 전송되면 URL을 일반 텍스트로 전송하지 않습니다. 이것은 다른 방식으로 처리되어야하며, 이것이 실제로 문제가 된 것입니다.
Timothy Mueller-Harder 2016 년

답변:


13

Mac OS X에서 URL을 여는 방식은 실제로 생각보다 복잡합니다. URL을 클릭하면 Mac OS X은 브라우저에 URL을 열지 않아도됩니다. 대신 kAEGetURLURL이 포함 된 ID와 함께 Apple 이벤트를 보냅니다 .

나는 실제로 Automator를 사용하지 않았습니다 (일반적인 사용에는 너무 느리고 제한적 임). 이에 대해서는 확실하지 않지만 Apple Events를 처리 할 수있는 능력이 있는지 의심합니다. 따라서 원하는 것을 달성하기 위해 Automator를 사용할 수 없습니다.

그러므로 Xcode에서 일반적인 Objective-C 앱을 사용해야합니다.

당신이해야 할 두 가지 기본 사항은 다음과 같습니다

  1. kAEGetURL 이벤트를 수신하여 응용 프로그램을 등록하고 설정 CFBundleURLTypes을 포함하는 앱의 Info.plist에 httphttps.

  2. kAEGetURL 이벤트를 처리하는 메소드를 구현하고 URL을 클립 보드에 복사하십시오.

이 두 가지 일은 Objective-C에서 비교적 간단합니다. 설명하기 위해이 작업을 수행하는 샘플 응용 프로그램을 만들었습니다. https://github.com/houbysoft/short/tree/master/Copy%20URL%20to%20Clipboard 에서 볼 수 있습니다 . 가장 중요한 파일은 https://github.com/houbysoft/short/blob/master/Copy%20URL%20to%20Clipboard/Copy%20URL%20to%20Clipboard/AppDelegate.m 이며 여기에서 등록 방법을 확인할 수 있습니다 이벤트 (applicationWillFinishLaunching : 메소드에서 수행) 및 클립 보드에 복사하는 방법 (getUrl : withReplyEvent : 메소드에서 수행)

게으른 느낌이 들며 이것이 작동하는지 확인하려면 이 파일을 가져 와서 응용 프로그램을 추출하여 기본 웹 브라우저로 설정하십시오 (Safari 환경 설정을 열고 기본 웹 브라우저 필드에서 해당 응용 프로그램을 찾으십시오). 그런 다음 Skype에서 링크를 클릭하면 클립 보드로 바로 복사됩니다.


답변 주셔서 감사합니다. OSX에서 URL이 어떻게 진행되는지 몰랐습니다. 나는 당신의 코드를 살펴 보았지만 Objective-C를 많이 모른다. 그러나 결과 응용 프로그램은 매력처럼 작동하며 처음부터 원하는 것입니다. 다시 감사합니다!
DjDCH

앱에서 잘 작동합니다 (let). 현상금을 수여하고 싶지만 Automator가 kAEGetURL 이벤트를 승인하도록 강제 할 수없는 경우 질문에 대한 명확한 정보가 누락되었습니다.
kopischke

@ kopischke : 방금 Automator 도움말에서 Apple 이벤트에 대한 언급을 검색했지만 아무것도 찾지 못했습니다. 나는 Automator가 이것을 지원하지 않는다고 가정하는 것이 공정하다고 생각합니다.
houbysoft

XCode / ObjC를 탐색하고 자신의 앱을 컴파일하지 않고도 Automator 워크 플로우를 확장하는 "논리적"방법 인 AppleScript를 사용하여이 작업을 수행 할 수 있습니다. (모두 복잡하지는 않지만 AppleScript가 더 쉬울 것입니다.)
ocodo

이것은 10.11에서 작동하지 않는 것 같습니다. "
/Applications/Clipboard.app에
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.