2010-07-15 37 views

Trả lời

4

SetWindowsHookEx giống như cũ InputManager hack, theo nghĩa là bạn thay đổi mã của ứng dụng từ bên trong thư viện được chia sẻ/plugin được tải vào.

Xem SIMBL để có bộ mã nguồn sẵn sàng cho một quy trình khác. Đối với các lớp Objective-C, bạn cần sử dụng method swizzling. Tôi đã không cố gắng thay thế các hàm C/C++ bản thân mình, nhưng chắc chắn nó có thể được thực hiện bằng cách sử dụng mach_override. Xem thêm this blog post.

Nhưng thường nếu bạn muốn sửa đổi ứng dụng GUI, hãy nhấn vào các lớp Objective-C là đủ.

0

Chạm sự kiện Quartz có thể theo dõi và sửa đổi các sự kiện cấp thấp như tổ hợp phím và nhấp chuột, tùy thuộc vào một số hạn chế. Bạn có thể nói thêm về những gì bạn muốn làm không?

+0

Giả sử tôi muốn móc hàm tải asdf.dylib. Các ideia là để buộc một ứng dụng để tải phiên bản tùy chỉnh của riêng tôi asdf.dylib, mà không cần sử dụng lừa DYLD_INSERT_LIBRARIES. – karlphillip

0

Bạn đang cố gắng hoàn thành, cụ thể là gì? Bạn có thể giải thích tại sao bạn muốn Mac OS X tương đương với SetWindowsHookEx()? (Câu trả lời ngắn: không có câu trả lời nào. Câu trả lời trung bình: tất cả mọi thứ bạn có thể làm với SetWindowsHookEx() trên Windows có thể được thực hiện trên Mac OS X theo cách khác, nhiều hơn.)

+0

Trên cửa sổ 'SetWindowsHookEx' có thể giúp bạn nhận các sự kiện từ ** quy trình ** khác. Chẳng hạn như đóng cửa sổ, tối đa hóa cửa sổ ... v.v. Bạn có chắc chắn rằng điều này có thể được thực hiện trên Mac OS X không? –

+0

Đây là câu trả lời rất cũ cho một câu hỏi rất cũ. :) Tôi đã nói rằng, nếu chúng tôi biết vấn đề mà nhà phát triển ban đầu đang cố gắng giải quyết, chúng tôi có thể đề xuất các phương pháp thay thế khác. –