Помогите найти ответ на вопрос: поддерживает ли Firefox 15 DDE команды? А именно WWW_OpenURL.
Я пытаюсь написать С++ приложение которое открывало бы в сабже заданный URL в активной вкладке.
Для этого вызываю функцию:

Выделить код

Код:

DdeClientTransaction(Cmd, 0xFFFFFFFF, hConv, 0L, 0, XTYP_EXECUTE, TIMEOUT_ASYNC, NULL);

Cmd - хэндлер указывающий на строку типа "\"www.google.com\",,-1,0,,,,"
Все что получается это открытие пустой страницы в новом окне.
Кто шарит в теме - помогите, примеры кода приветствуются.

mao1488 пишет

поддерживает ли 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
На сколько я помню свои эксперименты в Delphi 7-летней давности, то я запускал процесс и в качестве имени процесса передавал URL. Система сама решала какой браузер запустить.

Lain_13 пишет

На сколько я помню свои эксперименты в Delphi 7-летней давности, то я запускал процесс и в качестве имени процесса передавал URL

Ну вот я о том же. Это просто передача параметров через командную строку, не имеющее никакого отношения к DDE. Причем запуск не непосредственно процесса firefox, а запуск ассоциированного приложения. А ассоциация сама уже дергает то, что нужно - выше я упоминал про ветки реестра, где это прописано.

Скачал исходники 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()?

mao1488
https://developer.mozilla.org/en-US/docs/Simple_Firefox_build