Название: Получить список окон в mac os Отправлено: virtual_root от Июль 20, 2012, 15:41 И снова всем привет. Нашла в документации функции для работы с окнами в mac os https://developer.apple.com/library/mac/#documentation/Carbon/Reference/CGWindow_Reference/Reference/Functions.html (https://developer.apple.com/library/mac/#documentation/Carbon/Reference/CGWindow_Reference/Reference/Functions.html) но вот беда не могу подключить фреймворк HIToolbox, который для этого нужен. ApplicationServices/HIServices.h подключила, но функции CGWindowListCopyWindowInfo и CGWindowListCreate по прежнему не доступны. помогите пожалуйста!
Код
Название: Re: Получить список окон в mac os Отправлено: kambala от Июль 20, 2012, 16:40 фреймворки HIToolbox и Carbon тут не нужны, а инклудить в коде надо CGWindow.h
Название: Re: Получить список окон в mac os Отправлено: virtual_root от Июль 23, 2012, 09:52 Код он его не видит... помоему точно нужно подключить HIToolbox Название: Re: Получить список окон в mac os Отправлено: virtual_root от Июль 25, 2012, 10:15 Подключила файл CGWindow.h но функция CGWindowListCreate всё равно не доступна... Ребят подскажите, пожалуйста, что ещё нужно подключить. Вот ссылка на документацию https://developer.apple.com/library/mac/#documentation/Carbon/Reference/CGWindow_Reference/Reference/Functions.html (https://developer.apple.com/library/mac/#documentation/Carbon/Reference/CGWindow_Reference/Reference/Functions.html)
Вот как подключаю файл: Код Мне нужны функции из приведенной документации использовать. Название: Re: Получить список окон в mac os Отправлено: kambala от Июль 25, 2012, 11:09 так подключать файл неправильно – надо или только по названию или <фреймворк/файл>. попробуй ещё добавить
Код: LIBS += -framework CoreGraphics Название: Re: Получить список окон в mac os Отправлено: virtual_root от Июль 25, 2012, 11:32 всё заработало!
Теперь пытаюсь воспользоваться двумя функциями: CGWindowListCreate - возвращает массив идентификаторов окон активной сессии и функция CGWindowListCreateDescriptionFromArray - возвращает информацию об окнах. Но что-то не компилируется код.. я что-то наверное не правильно указываю... подскажите пожалуйста. Вот код: Код
Название: Re: Получить список окон в mac os Отправлено: virtual_root от Июль 25, 2012, 11:42 Вылазиют такие ошибки:
Код
Название: Re: Получить список окон в mac os Отправлено: kambala от Июль 25, 2012, 12:10 читать умеем? функция возвращает массив, а ты пытаешься записать результат в словарь
Название: Re: Получить список окон в mac os Отправлено: virtual_root от Июль 25, 2012, 12:54 немного разобралась, помогли добрые люди). Написала такую функцию:
Код Только вот никак не могу понять как извлечь значения по ключу из словаря ??? Может кто подскажет? Название: Re: Получить список окон в mac os Отправлено: kambala от Июль 25, 2012, 13:02 открываешь документацию по CFDictionary и ищешь функцию типа CFDictionaryGetValueForKey.
вообще, если есть возможность, то лучше пиши участки маковского кода на Objective-C – получится намного короче и понятнее. и ещё: функции, у которых в имени есть Create, предполагают, что пользователь сам должен освобождать память, выделенную на возвращённый объект, так что в конце подописывай CFRelease(array) и т.д. и ты неправильно с массивом работаешь: Код
Название: Re: Получить список окон в mac os Отправлено: virtual_root от Июль 25, 2012, 13:15 А разве можно в Qt Objective-C использовать? Покажите как, я с удовольствием перейду на это)
В документации нашла метод CFDictionaryGetValue, написала так: Код Но теперь не могу понять где мне получить моё значение ? Ведь функция CFDictionaryGetValue возвращает void... Название: Re: Получить список окон в mac os Отправлено: mutineer от Июль 25, 2012, 13:19 Но теперь не могу понять где мне получить моё значение ? Ведь функция CFDictionaryGetValue возвращает void... http://stackoverflow.com/questions/6007575/cfdictionarygetvalue Цитировать The result of CFDictionaryGetValue is what you put in the dictionary. You have to cast the result of CFDictionaryGetValue to the right pointer type to access the structure members Название: Re: Получить список окон в mac os Отправлено: virtual_root от Июль 25, 2012, 13:35 Цитировать вообще, если есть возможность, то лучше пиши участки маковского кода на Objective-C – получится намного короче и понятнее. Покажите как это делать?Название: Re: Получить список окон в mac os Отправлено: kambala от Июль 25, 2012, 13:54 Цитировать вообще, если есть возможность, то лучше пиши участки маковского кода на Objective-C – получится намного короче и понятнее. Покажите как это делать?Название: Re: Получить список окон в mac os Отправлено: virtual_root от Июль 25, 2012, 15:18 Интересно) а как вы в qt сделали файл с расширением .mm и как это скомпилировали ? Расскажите пожалуйста)
У меня всё получилось с CFDictionaryRef ! Вот как я сделала: Код
Название: Re: Получить список окон в mac os Отправлено: virtual_root от Июль 25, 2012, 15:25 только вот что-то по другому ключу не могу получить ничего..
Код Не подскажите почему? Может чтобы получать это значение нужно было заранее что-то описать? Название: Re: Получить список окон в mac os Отправлено: kambala от Июль 25, 2012, 15:27 Интересно) а как вы в qt сделали файл с расширением .mm и как это скомпилировали ? Расскажите пожалуйста) расширение можно прописать файлу любое. .mm – это исходник Objective-C++ (разрешает смешивать код Objective-C и C++). эти исходники подключаются в раздел OBJECTIVE_SOURCES, а заголовочные файлы Objective-C (в смысле где присутствуют какие-то специфические Objective-C-объявления типа @class, @interface, и т.п.) – соответствтенно в OBJECTIVE_HEADERS.только вот что-то по другому ключу не могу получить ничего.. посмотри что там вообще в словаре есть с помощью CFShow(dictionary) (будет вывод в консоль)Код Не подскажите почему? Может чтобы получать это значение нужно было заранее что-то описать? Название: Re: Получить список окон в mac os Отправлено: virtual_root от Июль 25, 2012, 15:32 уже разобралась, оказывается у не которых окон нет заголовков, они скрытые и возвращается значение 0, а я пытаюсь его в QString преобразовать :D
Переделала так: Код
Название: Re: Получить список окон в mac os Отправлено: virtual_root от Июль 25, 2012, 15:35 Цитировать расширение можно прописать файлу любое. .mm – это исходник Objective-C++ (разрешает смешивать код Objective-C и C++). эти исходники подключаются в раздел OBJECTIVE_SOURCES, а заголовочные файлы Objective-C (в смысле где присутствуют какие-то специфические Objective-C-объявления типа @class, @interface, и т.п.) – соответствтенно в OBJECTIVE_HEADERS. Это в .pro файле прописывать надо? OBJECTIVE_SOURCES и OBJECTIVE_HEADERS А можно примерчик ? Вы наверное где-то файл .mm добавляете в .pro файле? Название: Re: Получить список окон в mac os Отправлено: kambala от Июль 25, 2012, 15:51 да, в .pro. я же написал что в какой раздел добавлять (файлы .m (чистый Objective-C, без плюсов) кстати тоже в OBJECTIVE_SOURCES).
Название: Re: Получить список окон в mac os Отправлено: virtual_root от Июль 25, 2012, 18:13 спасибо буду пробовать)
|