Название: Использование openUrl, открытие файла с неизвестным расширением Отправлено: Zerkin от Февраль 03, 2014, 10:51 Доброго времени суток, господа!
Использую QDesktopServices::openUrl(const QUrl & url) для открытия html-лога в браузере по умолчанию. Всё хорошо, но суть в том, что файлу этого лога присваивается нестандартное расширение (от меня не зависит) вида .Ank, где n, k числа. Собственно, раздражает следующее поведение - как вы уже поняли, если файл с конкретным расширением не был открыт в каком-либо браузере до этого момента, то Windows (а это главная платформа в проекте) выбрасывает сообщение, что невозможно открыть файл, и приходится руками выбирать браузер. Процедура не очень утомительная, но пользователей не устраивает. Собственно, вопрос: используя openUrl, можно ли как-то обойти эту особенность ОСи и сразу открывать через браузер по умолчанию, без этого промежуточного сообщения? Или это придется обходить уже как-то через QProcess? Название: Re: Использование openUrl, открытие файла с неизвестным расширением Отправлено: Bepec от Февраль 03, 2014, 11:52 пишите html в конце лога.
"имяЛога.Ank.html". Самое верное решение! Название: Re: Использование openUrl, открытие файла с неизвестным расширением Отправлено: Zerkin от Февраль 03, 2014, 14:00 Верес, не имею права.
Мой модуль взаимодействует с общей системой, а в ней принят такой принцип создания любых файлов и присваивания им расширений, без разницы что внутри - html, или что-то другое. Расширения такие и точка. Так что вопрос открыт. Попутная проблема: В дебаговской сборке на if'е студия вылетает раз через раз :-\ Что очень странно. Код: QUrl logUrl("file:///" + path, QUrl::TolerantMode); (http://s7.hostingkartinok.com/uploads/thumbs/2014/02/0affd6842fe71f1cb163089511cc9df1.png) (http://hostingkartinok.com/show-image.php?id=0affd6842fe71f1cb163089511cc9df1) В релизе проблемы нету. Название: Re: Использование openUrl, открытие файла с неизвестным расширением Отправлено: Bepec от Февраль 03, 2014, 14:05 Значит платформозависимо создавайте ассоциацию с этим типом файлов. Хотя хз как создавать, если расширения меняются нафиг? Тупизм какой то. Чесстное слово :)
Винда каждый раз спрашивать будет ассоциацию! PS вы поспрашивайте у разрабов, у них скорее всего есть программа специальная для просмотра. PPS можете плюнуть и переименовывать файл на лету (если разрешено). Можете тупо копировать его в темповскую папку с нужным расширением и оттуда открывать. (это мне кажется более подходящим вариантом) Название: Re: Использование openUrl, открытие файла с неизвестным расширением Отправлено: Zerkin от Февраль 03, 2014, 14:12 Не сказал бы, что тупизм, там на этом принципе очень мощная система построена, на самом деле, n,k - не рандомные числа, они отвечают за определенную индексацию и еще что-то там, я честно говоря до конца не вникал, да и не моё это дело :) Просто применительно к моей задаче такой принцип не очень подходит, да и не рассчитывал, вероятно, никто, когда система создавалась, что в этих файлах будет лежать что-то отличное от записанных цифровых сигналов ;) А сейчас такая вот задача появилась.
Думаю, конечно, как вариант прикрутить виджет вебкитовский, чтоб пользователь просматривал лог через него, а не через браузер, но хотелось бы конечно не плодить окна от модуля. Название: Re: Использование openUrl, открытие файла с неизвестным расширением Отправлено: Zerkin от Февраль 03, 2014, 14:14 Да, я тоже думал про какой-нибудь временный файл. Может быть, это выход.
Название: Re: Использование openUrl, открытие файла с неизвестным расширением Отправлено: Igors от Февраль 03, 2014, 14:20 Здесь важно что за платформа. Напр на OSX это вообще не проблема, т.к. файл имеет тип (4 байта) и если он ненулевой то используется ОС'ом до extension. Если неск приложений умеют открывать файл такого типа, то можно установить атрибут creator (тоже 4 байта). По поводу др nix ОС'ов - по крайней мере тип должен быть. Или у Вас Вындоуз?
Название: Re: Использование openUrl, открытие файла с неизвестным расширением Отправлено: Zerkin от Февраль 03, 2014, 14:22 Онли Винда. Никсы где-то в очень далекой и туманной перспективе.
Название: Re: Использование openUrl, открытие файла с неизвестным расширением Отправлено: Zerkin от Февраль 03, 2014, 14:37 А по поводу вылета студии в дебаге у кого какие мысли есть?
Название: Re: Использование openUrl, открытие файла с неизвестным расширением Отправлено: Igors от Февраль 03, 2014, 14:46 Онли Винда. Никсы где-то в очень далекой и туманной перспективе. Тогда нужно что-то прописывать в реестре (напр на старте приложения). Да, через WinAPI, подробностей не знаю, но такая возможность есть: напр архиваторы умеют открывать свой "том архива" (с переменным расширением как у Вас).Ничего, походы в нативняк тоже полезны (чтобы не расслаблялись с OpenUrl) :) Название: Re: Использование openUrl, открытие файла с неизвестным расширением Отправлено: kambala от Февраль 03, 2014, 14:53 в реестр можно писать и через QSettings
можно попробовать запросить браузер по умолчанию (например программа, открывающая файлы html) и запустить его с твоим файлом в качестве параметра Название: Re: Использование openUrl, открытие файла с неизвестным расширением Отправлено: xokc от Февраль 04, 2014, 08:51 Как вариант: перед вызовом openUrl создавать временный html файл с содержимым, выполняющим редирект на требуемый *.Ank файл и в openUrl подставлять именно этот временный файл.
Название: Re: Использование openUrl, открытие файла с неизвестным расширением Отправлено: Zerkin от Февраль 04, 2014, 11:12 Как вариант: перед вызовом openUrl создавать временный html файл с содержимым, выполняющим редирект на требуемый *.Ank файл и в openUrl подставлять именно этот временный файл. Сделал как Вы предложили, вполне всё меня устраивает, спасибо! Спасибо всем за советы, остался только вопрос вылета студии, но я так понимаю это вопрос не данного раздела, да и проблема не в коде, вероятно. |