2014-11-06 14 views
5

Tôi đang tạo ứng dụng mac mà tôi muốn phân phối trong cửa hàng ứng dụng mac. Tôi cần ứng dụng này để có tính năng khóa màn hình.Khóa màn hình macbook từ ứng dụng hộp cát

Tôi có 2 cách tiếp cận khác nhau đang hoạt động, vấn đề là, ngay sau khi tôi bật hộp cát cho ứng dụng (cần thiết cho cửa hàng ứng dụng mac), cả hai cách tiếp cận đó đều không hoạt động.

Bạn có biết tôi cần yêu cầu quyền nào không? Hoặc bạn có biết cách tiếp cận thứ ba sẽ hoạt động với hộp cát không?

Cảm ơn

Tiếp cận 1, sử dụng CGSession (nhanh chóng):

var arguments = ["-suspend"] 
var task = NSTask() 
task.arguments = arguments 
task.launchPath = "/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession" 
task.launch() 

Tiếp cận 2, sử dụng IORequestIdle (nhanh chóng):

var r = IORegistryEntryFromPath(kIOMasterPortDefault, "IOService:/IOResources/IODisplayWrangler") 
if (r > 0) { 
    IORegistryEntrySetCFProperty(r, "IORequestIdle", kCFBooleanTrue) 
    IOObjectRelease(r) 
} 
+0

Tôi hài lòng với giải pháp Mục tiêu-C theo cách – saintmac

+0

Sự cần thiết của màn hình khóa là gì? Riêng tư? Bảo vệ dữ liệu? Tại sao khóa toàn bộ Mac và không chỉ ứng dụng của bạn? Để khóa toàn bộ mac, yêu cầu người dùng kích hoạt Tùy chọn hệ thống> Bảo mật> "Yêu cầu mật khẩu ... sau khi ngủ hoặc trình bảo vệ màn hình" và đặt góc hoạt động để nhập chế độ ngủ của màn hình/trình bảo vệ màn hình. Tôi nghi ngờ rằng điều này có thể được thực hiện theo chương trình vì nó liên quan đến quyền quản trị. –

+0

Vì mục đích là khóa máy mac. Không phải ứng dụng. Mục đích là cung cấp "nút khóa", không phải hướng dẫn về cách khóa mac (mà chúng tôi đã thực hiện trong thời gian chờ đợi) Nó có thể được thực hiện theo chương trình bởi vì chúng tôi đã thực hiện nó với ứng dụng ngoài Sandbox chế độ. Câu hỏi đặt ra là làm thế nào để làm điều đó trong chế độ hộp cát (để phân phối ứng dụng) – saintmac

Trả lời

0

Xin lỗi vì đã nói nó không thể được thực hiện . mục đích của hộp cát là để ngăn chặn một ứng dụng có thể chiếm toàn bộ máy tính.

Bạn có thể thử nhận ngoại lệ tạm thời thông qua các kênh được ghi trong hướng dẫn hộp cát.

Các vấn đề liên quan