2015-03-15 4 views
0

Итак, я пишу приложение на C, которое требует, чтобы я открыл браузер на устройстве пользователя по определенному URL-адресу. Чтобы сделать это в Windows, я бы использовал start; на Mac я бы использовал open; на ОС Debian я бы использовал разумный браузер; и в среде рабочего стола, поддерживающей xdg-open, я бы использовал это (All via system()). Во-первых, действительно ли это лучший способ открыть браузер через C? Похоже, что должен быть более простой способ.Как определить, могу ли я открыть браузер с помощью C

Моя настоящая проблема в этом, если это не сработает? Как я могу определить, может ли устройство открывать веб-браузер с поддержкой GUI, JS или если один из вышеперечисленных методов не работает?

Что-то вроде

if browser can be opened, 
     open browser 
    else do X 

Есть ли способ сделать это в C? Если так, то, что это?

+0

C предоставляет 'fork()'/'exec *()', по крайней мере, в UNIX и Mac. Если 'exec *()' failed, браузер не открывается. – alk

+0

Однако, если вы могли бы что-то сделать, это не обязательно означает, что это удалось, если вы попытаетесь. – alk

+0

И независимо от того, открыт ли браузер в действительности JS, это совершенно другая история. – alk

ответ

0

Нет. Нет.

Хорошо, это немного коротко. Проблема в том, что вы пытаетесь запустить чрезвычайно сложное приложение, и вы даже не уверены, что именно вы хотите запустить, за исключением того, что он должен охватывать несколько неопределенно объявленных правил.

Чтобы быть определенным, вы должны указать код, который хотите запустить. В Windows вы можете сделать это, используя автоматизацию COM для связи с Internet Explorer и передать свой URL-адрес (после проверки версий). Даже на Windows вы не можете быть определенным что «начало» запустит браузер точно такого типа, который вы хотите.

Единственный способ быть на самом деле - ссылка на движок браузера, который вы знаете, предоставляет именно то, что вы хотите. Это довольно большая работа только для того, чтобы быть определенными и имеет очевидные недостатки, поэтому большинство людей не беспокоится.

+0

Значит, вы говорите, что я должен попробовать настоящие браузеры, а не что-то вроде open и, как сказал алк, попробуйте вилку и exec для firefox, а затем хром и так далее? – user2784930

+0

Нет, это просто игнорирует пользовательские настройки, то есть: что, если вы найдете копию firefox V2, когда пользователь хочет Chrome? И даже если вам удастся найти правильный, он все равно не означает, что пользователь не отключил Javascript. Если вы хотите быть уверенным, что он будет работать так, как вы хотите, чтобы вы предоставили браузер или использовали тот, который, как вы знаете, наверняка будет или может быть запущен по вашему желанию. – user3710044

+0

Итак, вкратце я должен заставить пользователя решить его с каким-либо конфигурационным файлом. Благодарю. – user2784930

Смежные вопросы