Страницы: 1
Помогите найти ответ на вопрос: поддерживает ли Firefox 15 DDE команды? А именно WWW_OpenURL.
Я пытаюсь написать С++ приложение которое открывало бы в сабже заданный URL в активной вкладке.
Для этого вызываю функцию:
DdeClientTransaction(Cmd, 0xFFFFFFFF, hConv, 0L, 0, XTYP_EXECUTE, TIMEOUT_ASYNC, NULL);
Cmd - хэндлер указывающий на строку типа "\"www.google.com\",,-1,0,,,,"
Все что получается это открытие пустой страницы в новом окне.
Кто шарит в теме - помогите, примеры кода приветствуются.
Отсутствует
поддерживает ли Firefox 15 DDE команды?
Нет. DDE - это технология от MS, специфичная для windows-платформы (в частности, её реализация достаточно тесно завязана на COM). Firefox как кроссплатформенное приложение ничего не знает про специфику отдельных платформ.
Отсутствует
okkamas_knife
Думаю, что это просто запуск процесса с параметром, равным URL ссылки - аналогично набранному в консоли "firefox.exe http://..." (если процесс firefox при этом уже запущен, откроется новый таб с переданным адресом, если нет - откроется на последнем профиле, на котором был запуск без ключа -no-remote). Буду дома - могу посмотреть в исходниках миранды.
В пользу этого мнения также говорит то, что в реестре в ключах FirefoxHTML, FirefoxURL (это в HKCR), etc. в подветке shell/open/command прописано "C:\Program Files\Mozilla Firefox\firefox.exe" -osint -url "%1", а в подветке shell/open/ddeexec пусто; в ветке HKCR/http/shell/open/ddeexec/Application прописан IExplore, и, наконец, сам firefox.exe нигде не зарегистрирован как inproc-сервер.
Отредактировано hydrolizer (03-09-2012 09:11:50)
Отсутствует
hydrolizer
На сколько я помню свои эксперименты в Delphi 7-летней давности, то я запускал процесс и в качестве имени процесса передавал URL. Система сама решала какой браузер запустить.
Отсутствует
На сколько я помню свои эксперименты в Delphi 7-летней давности, то я запускал процесс и в качестве имени процесса передавал URL
Ну вот я о том же. Это просто передача параметров через командную строку, не имеющее никакого отношения к DDE. Причем запуск не непосредственно процесса firefox, а запуск ассоциированного приложения. А ассоциация сама уже дергает то, что нужно - выше я упоминал про ветки реестра, где это прописано.
Отредактировано hydrolizer (03-09-2012 09:16:46)
Отсутствует
Скачал исходники FF и в файле mozilla-central\toolkit\xre\nsNativeAppSupportWin.cpp обнаружил функцию HandleDDENotification(), которая парсит DDE сообщения:
const char * const topicNames[] = { "WWW_OpenURL", "WWW_Activate", "WWW_CancelProgress", "WWW_Version", "WWW_RegisterViewer", "WWW_UnRegisterViewer", "WWW_GetWindowInfo" };
WWW_GetWindowInfo - точно работает, у меня получилось прочитать текст из адресной строки и заголовок окна.
Вопрос: можно ли сделать билд исходников Firefox и с помощью отладки в Visual Studio посмотреть как работает HandleDDENotification()?
Отсутствует
Страницы: 1