Tôi đang cố gắng tìm hiểu mã cho Mac. Tôi đã là một anh chàng Java trong một thời gian, vì vậy tôi hy vọng vấn đề tôi đang gặp phải là một sự hiểu lầm đơn giản về Cocoa.addGlobalMonitorForEventsMatchingMask chỉ trả lại vị trí chuột
Tôi đã có đoạn mã sau:
-(IBAction)beginEventMonitor:(id)sender {
_eventMonitor = [NSEvent addGlobalMonitorForEventsMatchingMask:(NSLeftMouseUpMask)
handler:^(NSEvent *incomingEvent) {
//NSWindow *targetWindowForEvent = [incomingEvent window];
NSLog(@"Got a mouse click event at %@", NSStringFromPoint([incomingEvent locationInWindow]));
}];
}
-(IBAction)stopEventMonitor:(id)sender {
if (_eventMonitor) {
[NSEvent removeMonitor:_eventMonitor];
_eventMonitor = nil;
}
}
Đây là một cái móc đơn giản để cho tôi biết khi một click chuột xảy ra ở mức độ toàn cầu. Trình xử lý đang làm việc, nhưng nội dung của incomingEvent dường như không được đặt thành bất cứ thứ gì. Thông tin hữu ích duy nhất mà tôi có thể tìm thấy là vị trí của con chuột tại thời điểm nhấp chuột và cửa sổId của cửa sổ được nhấp vào.
Tôi không thể có thêm thông tin? Tôi có không thiết lập đúng màn hình không? Tôi thực sự muốn có thể biết được cửa sổ nào đã được nhấp vào, nhưng tôi thậm chí không thể tìm thấy một cách để biến vị trí chuột hoặc windowId thành một cái gì đó hữu ích.
hoạt động tốt với sự kiện chuột, bạn có biết điều gì đó cho sự kiện keyDown không? –