Имитация щелчка мышью по окну вместо экрана - PullRequest
1 голос
/ 07 апреля 2009

Возможно ли в MacOS X отправить щелчок мыши в конкретное окно?

Мне уже удалось отправить клик на весь экран через CGPostMouseEvent. Окна, которыми я хочу управлять, перекрывают друг друга, поэтому моей следующей идеей было вывести правильное окно на передний план, прежде чем запускать щелчок. Это работает, но заканчивается полным беспорядком ...; -)

Ответы [ 3 ]

4 голосов
/ 13 мая 2009

Можно отправлять события приложениям Какао через недокументированные

CGEventPostToPSN

Вот пример кода от Дейва Кека. Он разместил небольшое приложение в списке рассылки .

customEvent = [NSEvent mouseEventWithType: [event type]
                                 location: [event locationInWindow]
                            modifierFlags: [event modifierFlags] | NSCommandKeyMask
                                timestamp: [event timestamp]
                             windowNumber: WID
                                  context: nil
                              eventNumber: 0
                               clickCount: 1
                                 pressure: 0];

CGEvent = [customEvent CGEvent];
CGEventPostToPSN(&psn, CGEvent);

Для архивации я вставил больше исходного кода на pastie.org

Для справки: Вся цепочка в списке рассылки cocao-dev

1 голос
/ 07 апреля 2009

Может быть, вы можете использовать Window Manager API: SetUserFocusWindow () и затем создать событие мыши.

1 голос
/ 07 апреля 2009

Возможно, вы можете использовать Специальные API доступа .

Это немного сложнее, но должно работать.

...