AXUIElement를 조작하기 위해

1268 단어 SwiftMac

소개



mac에서 다른 앱의 윈도우를 이동시키는 앱을 만들고 싶고 여러가지 조사한 곳

기사가 도움이되었습니다.

그러나 구현 중에 위 기사의 제한 사항을 피하지 않았기 때문에 AXUIElement 를 조작한다 AXUIElementCopyAttributeValue 또는 AXUIElementSetAttributeValue 취득하지 못하고 빠져 버렸습니다.

그래서 잊지 말고 제한을 피하기 위해 접근성 권한을 앱에 부여하는 방법을 남기기로 결정했습니다.

해결 방법



1. SandBox 끄기



Xcode에서 자동 생성되는 アプリ名.entitlements 파일의 App sandbox를 NO로 변경

내게 필요한 옵션 API는 App SandBox 환경에서 두드리지 않으므로 SandBox 설정을 제거합니다.

2. 내게 필요한 옵션 권한 부여



다음 코드를 삽입합니다.
let options: NSDictionary = [kAXTrustedCheckOptionPrompt.takeUnretainedValue() as String : true]
let accessEnabled = AXIsProcessTrustedWithOptions(options)
if !accessEnabled {
    print("Access Not Enabled")
}
AXIsProcessTrustedWithOptions 에서 앱에 접근성 권한이 있는지 확인하고, 그렇지 않으면 권한을 부여할지 묻는 대화 상자가 표시되므로 시스템 환경 설정에서 권한을 부여합니다.

결론



아는 사람에게는 간단한 일이라도 지식이 없으면 고생하네요.
이번에 처음으로 괜찮은 앱을 제작하고 있습니다만, 제대로 된 엔지니어에의 길은 아직도 앞이 길 것 같습니다.

좋은 웹페이지 즐겨찾기