Russian Qt Forum

Программирование => С/C++ => Тема начата: negative от Декабрь 21, 2009, 16:10



Название: Открыть проассоциированный файл - пусто в *argv[]
Отправлено: negative от Декабрь 21, 2009, 16:10
Здравствуйте. Требуется открыть имеющийся файл написанной программой. В windows и linux вопрос решается получением имени файла из argv[1]. Но в макоси там пусто! Собственно вопрос - где брать имя открываемого файла под МакОсом?


Название: Re: Открыть проассоциированный файл - пусто в *argv[]
Отправлено: lit-uriy от Декабрь 21, 2009, 16:35
я думаю, в коде он берётся там же, только вот аргумент не передаётся самой программе, возможно ты не правильно что-то настроил в самой ОСьке


Название: Re: Открыть проассоциированный файл - пусто в *argv[]
Отправлено: Dendy от Декабрь 21, 2009, 16:47
QCoreApplication::applicationFilePath(). Если интересны подробности - загляните в реализацию.


Название: Re: Открыть проассоциированный файл - пусто в *argv[]
Отправлено: Igors от Декабрь 21, 2009, 16:55
Здравствуйте. Требуется открыть имеющийся файл написанной программой. В windows и linux вопрос решается получением имени файла из argv[1]. Но в макоси там пусто! Собственно вопрос - где брать имя открываемого файла под МакОсом?
Там же, из argv[1] (2 и.т.п). Если пусто - то это проблемы запускающего который не подал аргументы командной строки


Название: Re: Открыть проассоциированный файл - пусто в *argv[]
Отправлено: negative от Декабрь 21, 2009, 17:07
Ну так запускающий делает дабл клик по файлу, и командную строку не открывает.
Уточняю на всякий случай - запускается на сам бинарный файл, а пакет, его содержащий.


Название: Re: Открыть проассоциированный файл - пусто в *argv[]
Отправлено: Igors от Декабрь 21, 2009, 17:17
Ну так запускающий делает дабл клик по файлу, и командную строку не открывает.
Уточняю на всякий случай - запускается на сам бинарный файл, а пакет, его содержащий.
Ясно, запускается bundle/package. Так откуда же возьмутся аргументы командной строки если их никто не давал? Ну и будет argv[0] имя самой программы (не bundle) - и все.


Название: Re: Открыть проассоциированный файл - пусто в *argv[]
Отправлено: negative от Декабрь 21, 2009, 17:25
Ну так я понимаю что так не получится) А как же правильно-то сделать?)


Название: Re: Открыть проассоциированный файл - пусто в *argv[]
Отправлено: Alex Custov от Декабрь 21, 2009, 19:23
QCoreApplication::applicationFilePath(). Если интересны подробности - загляните в реализацию.

Не. Автору нужен путь к файлу переданному как аргумент ком. строки, а не к бинарнику.


Название: Re: Открыть проассоциированный файл - пусто в *argv[]
Отправлено: Igors от Декабрь 21, 2009, 21:15
Ну так я понимаю что так не получится) А как же правильно-то сделать?)
Сделать ЧТО?  :) Если Вы запускаете программу из другой - нет проблем, давайте командную строку как обычно, это работает. Если же надо пользователю дать возможность открыть файл с помощью этой программы - тогда хужее. На Mac Вам надо

1) отредактировать файл info.plist (вставить туда "Document Types" которые должны пониматься). Этот файл Qt создает там же где и проект. Проще всего взять info.plist у др. программы и скопировать по образцу. После этого Вы сможете "бросать" файлы данного типа на иконку Вашего application.

2) К сожалению дропнутые файлы в командой строке не придут - вместо этого задача получит kHighLevelEvent и Вам надо пробираться садами-огородами через AppleEvent. Вот ссылочка http://doc.trolltech.com/qq/qq12-mac-events.html (http://doc.trolltech.com/qq/qq12-mac-events.html)


Название: Re: Открыть проассоциированный файл - пусто в *argv[]
Отправлено: negative от Декабрь 21, 2009, 22:32
Ясно, спасибо большое, ушел копать)