Как обрабатывать данные из внешней программы на Mac OSx - PullRequest
0 голосов
/ 25 ноября 2010

Я хотел бы создать программу (я бы предпочел на языке C), но даже в какао, которая может брать данные из внешней программы (например, iTunes или adium) и использовать их.Например, я хотел бы взять данные списка или текст чата, чтобы манипулировать им.Мне нужно место для начала.В Windows я думаю, что это возможно с некоторыми API, которые находят hWnd окна, а затем найти указатель на список или текстовое поле.Пожалуйста, дайте мне немного информации о том, как начать.Заранее спасибо.

1 Ответ

1 голос
/ 25 ноября 2010

Непонятно, что именно вы хотите сделать. Это либо невозможно, либо строго ограничено.

С одной стороны, разные приложения используют разные способы построения «списка» - приложения какао используют NSTableView, приложения Carbon используют DataBrowser, а приложения GTK, Qt и Java используют еще более разные API. Они не все проходят через какую-то обычную коробку со списком; каждый является независимой реализацией.

(Вы могли бы надеяться , что NSTableView или DataBrowser будут основываться на другом, но не рассчитывайте на это.)

С другой стороны, невозможно получить указатель на этот элемент управления. Вы не можете получить доступ к представлению NSTableView, DataBrowser или эквиваленту GTK / Qt / Java другого приложения, если (и это работает только для NSTableView) приложение преднамеренно предоставляет его вам. Это не похоже на твою ситуацию.

Наиболее близким к этому является Accessibility, который может быть довольно близок, но вряд ли будет работать с большинством приложений, не основанных на Какао.

Даже в этом случае представление может отображать не все данные. Табличное представление может быть заполнено лениво, и табличное представление, разработанное в имитации iOS UITableView, может даже никогда иметь все данные (потому что оно имеет только то, что может отображать).

(Все вышеперечисленное относится ко всем видам, а не только к табличным представлениям. Представления коллекций, текстовые поля, кнопки - одно и то же для всех.)

Единственный способ получить истинную, полную копию данных - это обратиться к контролеру, которому он принадлежит. И, опять же, это невозможно, если приложение специально не предлагает его вам. Не говоря уже о том, что приложение может даже не иметь контроллера (не объектно-ориентированного, не MVC или просто небрежного).

… чтобы манипулировать им.

Получение данных, во-первых, самая простая часть. Почти невозможно связываться с данными в другом приложении - по понятной причине.

Самое близкое, что вам нужно для достижения одной из этих целей - это интерфейсы Доступности.

...