Найти окно на месте, используя проблемы с углеродом и углеродом в 64-битных приложениях - PullRequest
0 голосов
/ 13 апреля 2010

Как я уже сказал в некоторых вопросах сегодня, я ищу способ получить ссылки window или windowPart в определенном месте. Хотя я знаю, что мог бы использовать Какао для этой цели (я пока не знаю, как это сделать), я предпочитаю (и, вероятно, нуждаюсь) сделать это с помощью Carbon, потому что все приложение, которое нуждается в этой функции, написано на C ++, но нашел много проблем, пытаясь это сделать.

Кто-нибудь получает действительный windowPtr или windowRef, используя одну из следующих функций? FindWindow, MacFindWindow, HIWindowFindAtLocation или FindWindowOfClass

Я всегда получаю 0 как windowRef или windowPtr, который я ищу. Что я делаю не так? Есть идеи?

Это правда, что теперь, если вы хотите создать 64-битное приложение для Mac OS X, вам нужно использовать Cocoa для реализации его пользовательского интерфейса, потому что некоторые API, обычно используемые приложениями Carbon, недоступны в 64-битных приложениях ?

Спасибо.

JxXx

1 Ответ

1 голос
/ 13 апреля 2010

На основании вашего ответа на этот вопрос кажется, что вы пытаетесь получить WindowRef в окно другого приложения.

Как эта публикация в списке разработчиков углерода говорит:

Вы не можете получить доступ к памяти в других программах. WindowRef из другой программы будет бессмысленным в памяти вашей программы.

И слово на 64-битном углероде таково:

Если вы хотите создать 64-битную версию приложение для Mac OS X, вам нужно использовать Какао для реализации своего пользователя интерфейс.

РЕДАКТИРОВАТЬ -

Вы можете получить местоположение мыши с помощью [NSEvent mouseLocation] (Какао) или GetMouse() (Углерод). Если вы хотите взаимодействовать с окнами, принадлежащими другому приложению, вам нужно использовать что-то вроде Accessibility API (Какао) или низкоуровневые функции Quartz Window list . Функция Quartz возвращает список всех окон (принадлежащих всем приложениям) и ограниченную информацию о каждом (границы, владелец PID и т. Д.)

...