Trong Mac OS/Cocoa, tôi có thể tổng hợp các mục nhập bàn phím - chuỗi - cho ứng dụng phía trước theo cách minh bạch không?Tạo sự kiện bàn phím cho ứng dụng phía trước
Để chính xác hơn, tôi không muốn gửi các ký tự đặc biệt hoặc chuỗi điều khiển. Nhu cầu duy nhất của tôi là để gửi các ký tự chuẩn.
Chỉ cần học here, mà AppleScript có thể làm các việc lừa như thế này:
tell application "TextEdit"
activate
tell application "System Events"
keystroke "f" using {command down}
end tell
end tell
Q: Làm thế nào tôi có thể làm điều này bằng ObjC/ca cao?
CẬP NHẬT 2012/02/18 - Nicks đề nghị tăng cường
Dựa trên mã Nick 's bên dưới, đây là giải pháp cuối cùng:
// First, get the PSN of the currently front app
ProcessSerialNumber psn;
GetFrontProcess(&psn);
// make some key events
CGEventRef keyup, keydown;
keydown = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)6, true);
keyup = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)6, false);
// forward them to the frontmost app
CGEventPostToPSN (&psn, keydown);
CGEventPostToPSN (&psn, keyup);
// and finally behave friendly
CFRelease(keydown);
CFRelease(keyup);
Sử dụng phương pháp này, một nhấp chuột vào một nút của bảng điều khiển không kích hoạt nhắm mục tiêu sự kiện đến ứng dụng thực tế phía trước. Hoàn toàn những gì tôi muốn làm.
Cảm ơn bạn! Không bao giờ làm bất cứ điều gì ở mức thấp như vậy. – SteAp