วิธีเข้าถึง URL ที่ถูกคลิกในแอปพลิเคชันตัวจัดการ URL ที่สร้างขึ้นใน Automator


14

ขณะนี้ฉันกำลังพยายามปรับเปลี่ยนพฤติกรรมการจัดการ URL เริ่มต้นใน OS X ฉันต้องการเมื่อคลิกที่ลิงก์ใด ๆ นอกเว็บเบราว์เซอร์เพื่อคัดลอก URL นี้ไปยังกระดานข้อมูลแทนที่จะเปิดในเว็บเบราว์เซอร์เริ่มต้น - เช่น การคลิกลิงก์ในบทสนทนา Skype ควรคัดลอก URL นี้ไปยัง Pasteboard OS X แทนที่จะเปิดใน Firefox (ซึ่งปัจจุบันคือเว็บเบราว์เซอร์เริ่มต้นของฉัน)

ฉันมีความคิดเกี่ยวกับวิธีแก้ปัญหา แต่ขณะนี้ฉันไม่สามารถใช้งานได้ หากฉันสามารถสร้างแอปพลิเคชันที่ใส่ URL ลงในกระดาษชำระที่ส่งไปให้และสามารถตั้งค่าแอปพลิเคชันนี้เป็นเว็บเบราว์เซอร์เริ่มต้นฉันจะสามารถบรรลุเป้าหมายได้

ฉันสร้างแอปพลิเคชันด้วย Automator ที่เรียกใช้งานคำสั่งเชลล์pbcopyและตั้งค่าแอปพลิเคชันนี้เป็นเว็บเบราว์เซอร์เริ่มต้นของฉัน แต่ฉันไม่ได้รับผลลัพธ์ตามที่คาดไว้ ฉันทำการทดสอบและฉันสามารถยืนยันได้ว่าแอปพลิเคชันทำงานเมื่อคลิกที่ลิงก์อย่างไรก็ตามฉันไม่สามารถรับ URL ที่ส่งผ่านไปยังสคริปต์แอปพลิเคชัน / เชลล์ได้ ฉันลองทั้ง stdin หรือผ่านการโต้แย้ง แต่ไม่ประสบความสำเร็จ

มีวิธีสำหรับแอปพลิเคชันที่สร้างขึ้นด้วย Automator เพื่อดึง URL ที่คลิกและส่งไปpbcopyเมื่อแอปพลิเคชันนั้นถูกตั้งค่าเป็นตัวจัดการ (เริ่มต้น) สำหรับ URL หรือไม่

อีกวิธีหนึ่งมีวิธีที่ดีกว่าในการสร้างเว็บเบราว์เซอร์ปลอมที่รับอินพุตและวางไว้ใน Pasteboard มากกว่า Automator หรือไม่ หรือมีวิธีอื่นที่ฉันสามารถบรรลุเป้าหมายได้โดยไม่ต้องใช้แอปพลิเคชัน / สคริปต์ที่กำหนดเอง


ไม่ใช่การวางคำตอบนี้เนื่องจากไม่ใช่โซลูชันที่สมบูรณ์ แต่เป็นการเริ่มต้น - ฉันใช้rubicode.com/Software/RCDefaultAppเพื่อตั้งค่าแอปพลิเคชันอัตโนมัติเป็นเบราว์เซอร์เริ่มต้น ใน Automator มีการดำเนินการเพื่อคัดลอกไปยังคลิปบอร์ด ฉันไม่สามารถรับข้อความใด ๆ ลงในแอพอัตโนมัติได้
penguinrob

เหมือนกัน แต่ฉันใช้ Choosy ฉันทำการทดสอบมาพอสมควรแล้วและฉันได้พบสิ่งต่อไปนี้: 1) แอป Automator ทำงาน 2) ดูเหมือนจะไม่ได้รับการป้อนข้อมูลใด ๆ เลย 3) Ergo เมื่อเบราว์เซอร์ถูกส่ง "ลิงก์" มันจะไม่ส่ง URL ในรูปแบบธรรมดา สิ่งนี้จะต้องได้รับการจัดการในวิธีที่แตกต่างกันและนั่นคือสิ่งที่คำถามเกิดขึ้น
Timothy Mueller-Harder

คำตอบ:


13

วิธีที่การเปิด URL ใน Mac OS X นั้นซับซ้อนกว่าที่คุณคิดจริงๆ เมื่อคุณคลิก URL, Mac OS X ไม่เพียง แต่ส่ง URL เพื่อเปิดเบราว์เซอร์ แต่จะส่งกิจกรรม Apple พร้อมด้วย ID kAEGetURLที่มี URL แทน

ฉันไม่เคยใช้ Automator จริงๆ (มันช้าเกินไปและ จำกัด สำหรับการใช้งานทั่วไปของฉัน) ดังนั้นฉันจึงไม่แน่ใจเกี่ยวกับสิ่งนี้ แต่ฉันสงสัยว่ามันมีความสามารถในการจัดการกับเหตุการณ์ของ Apple ดังนั้นคุณจะไม่สามารถใช้ Automator เพื่อให้ได้ตามที่คุณต้องการ

ดังนั้นคุณจะต้องหันไปใช้แอป Objective-C ปกติใน Xcode

สองสิ่งพื้นฐานที่คุณต้องทำคือ:

  1. ลงทะเบียนของแอปสำหรับการรับเหตุการณ์ kAEGetURL และตั้งค่าCFBundleURLTypesใน Info.plist ของแอปจะรวมและhttphttps

  2. ใช้วิธีการจัดการเหตุการณ์ kAEGetURL และทำการคัดลอก URL ไปยังคลิปบอร์ด

สองสิ่งนี้ค่อนข้างตรงไปตรงมาใน Objective-C; เพื่อแสดงให้เห็นว่าฉันได้สร้างแอปพลิเคชันตัวอย่างที่ทำสิ่งนี้ คุณสามารถดูได้ที่https://github.com/houbysoft/short/tree/master/Copy%20URL%20 ถึง % 20Clipboard ไฟล์ที่สำคัญที่สุดคือhttps://github.com/houbysoft/short/blob/master/Copy%20URL%20 ถึง%20Clipboard/Copy%20URL%20ถึง%20Clipboard/AppDelegate.mคุณสามารถดูวิธีการลงทะเบียน เหตุการณ์ (จะทำในเมธอด applicationWillFinishLaunching:) และวิธีคัดลอกไปยังคลิปบอร์ด (ซึ่งจะทำในเมธอด getUrl: withReplyEvent:)

หากคุณรู้สึกขี้เกียจและอยากเห็นว่ามันใช้งานได้ให้คว้าไฟล์นี้แยกแอปพลิเคชั่นจากมันตั้งเป็นเว็บเบราว์เซอร์เริ่มต้น (เปิดการตั้งค่า Safari แล้วเรียกดูแอปนั้นในฟิลด์เว็บเบราว์เซอร์เริ่มต้น) จากนั้นคลิกที่ลิงก์ของคุณใน Skype และควรคัดลอกไปยังคลิปบอร์ดของคุณโดยตรง


ขอบคุณสำหรับคำตอบ. ฉันไม่รู้ว่า URL ดำเนินการใน OSX อย่างไร ฉันดูโค้ดของคุณแล้ว แต่ฉันไม่รู้ว่า Objective-C มากแค่ไหน แต่แอปพลิเคชั่นที่คุณสร้างขึ้นนั้นทำงานได้อย่างมีเสน่ห์และนั่นคือสิ่งที่ฉันต้องการตั้งแต่แรก ขอบคุณอีกครั้ง!
DjDCH

ทำงานได้ดีบนแอป (ให้) ฉันชอบที่จะมอบรางวัล แต่ฉันพลาดข้อมูลที่ชัดเจนเกี่ยวกับคำถามว่า Automator สามารถ (หรือไม่สามารถ) ถูกบังคับให้ยอมรับเหตุการณ์ kAEGetURL
kopischke

@kopischke: ฉันแค่ค้นหาความช่วยเหลือ Automator สำหรับการกล่าวถึงเหตุการณ์ของ Apple และไม่พบอะไรเลย ฉันคิดว่ามันยุติธรรมที่จะถือว่า Automator ไม่สนับสนุนสิ่งนี้
houbysoft

เป็นไปได้ที่จะทำเช่นนี้กับ AppleScript ซึ่งจะเป็นวิธี "ตรรกะ" ในการขยายเวิร์กโฟลว์อัตโนมัติโดยไม่ต้องเจาะเข้าไปใน XCode / ObjC และรวบรวมแอปของคุณเอง (ไม่ได้ว่ามันเป็นสิ่งที่ซับซ้อน แต่ก็มีแนวโน้มที่ AppleScript จะง่ายขึ้น.)
ocodo

ดูเหมือนว่าจะใช้งานไม่ได้กับ 10.11 "/ Applications / คัดลอก URL ไปยัง Clipboard.app ไม่สามารถใช้เป็นเบราว์เซอร์ HTTP"
TJ Luoma
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.