--
Вы получили это сообщение, поскольку подписаны на группу "Fiction Book Editor".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес fiction-book-ed...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/fiction-book-editor/2642f38e-166b-4345-977a-d58b99bb6f91n%40googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/fiction-book-editor/CAKw_SM3EUK%3DxSweV2T1CpP4%3D69Doew5MBmdqDavSwN%3DMiAUfxA%40mail.gmail.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/fiction-book-editor/ce5a8371-6161-41fe-80c3-9a454c3a448cn%40googlegroups.com.
Да, может. Эта функция называется «Режим совместимости» (Compatibility View) и «Эмуляция документов» (Document Mode). Она существует именно для того, чтобы старые корпоративные приложения и сайты, написанные под IE7, могли работать в IE11.
Однако эмуляция неидеальна, и есть несколько способов её включения. Вот как это работает:
1. Режим совместимости (Compatibility View) — эмуляция IE7 по умолчаниюЭто самый простой способ для пользователя или администратора.
Как включить: Нажать на иконку шестеренки (Сервис) → Параметры просмотра в режиме совместимости (Compatibility View settings).
Результат: Если добавить туда сайт, IE11 попытается отобразить его так, как это делал IE7.
Нюанс: По умолчанию галочка «Использовать списки совместимости Microsoft» активна. Microsoft вела «белый список» сайтов, которые автоматически переключаются в режим IE7. Если приложение там есть, оно «прикинется» IE7 без вашего участия.
User-Agent: При таком способе строка User-Agent действительно меняется на MSIE 7.0, а версия Trident (движка) указывает на IE7.
Это механизм, управляемый со стороны разработчика или администратора сервера.
Как работает: Сервер отправляет HTTP-заголовок или в HTML-код страницы вставлен мета-тег:
Результат: IE11 получает команду «рендерить эту страницу, используя движок и поведение IE7».
Разница в User-Agent: Здесь строка User-Agent не всегда меняется на IE7 по умолчанию (она остается как у IE11). Сервер видит современный User-Agent, но рендеринг и поведение JavaScript (движок JScript v5.7 вместо Chakra) будут от IE7. Это может сбивать с толку серверную логику определения браузера.
Для крупных организаций Microsoft добавила механизм, который глубже погружает IE11 в старые версии.
Как работает: Администратор домена через групповые политики составляет список сайтов. Для сайта можно принудительно указать режим совместимости с конкретной версией (IE7, IE8 и т.д.).
Результат: IE11 перезапускает вкладку внутри себя так, что даже строка User-Agent меняется на MSIE 7.0, и движок полностью переключается. Этот режим глубже обычного Compatibility View.
Если вам нужно, чтобы приложение «видело» IE7, просто включить любой из режимов может быть недостаточно из-за двух главных отличий IE11, которые не исчезают полностью:
JavaScript-движок: В IE7 использовался JScript 5.7. В IE11 изначально используется Chakra. При включении режима IE7 через мета-тег или Compatibility View движок переключается обратно на старый, медленный и со старыми багами. Без этого переключения никакого IE7 не получится.
Объектная модель и безопасность: IE7 имел дырявую модель безопасности, позволял ActiveX работать без лишних вопросов и имел свою, более вольную DOM-модель. Режимы совместимости имитируют это, но есть сценарии (особенно с VBScript и старыми кривыми ActiveX-компонентами), где полная эмуляция невозможна. В этом случае выручал только Enterprise Mode.
Итог: Да, IE11 может «прикинуться» IE7 по команде из настроек браузера, групповых политик Windows или по требованию самого сайта.
=== Конец цитаты ===
Краткий ответ: Нет, не может.
Вот подробное объяснение причин и механизмов, лежащих в основе этого ограничения.
1. Фундаментальное правило Windows: Разрядность процессаВ Windows существует жесткое правило: 32-битный процесс может загружать только 32-битные DLL и компоненты, а 64-битный процесс — только 64-битные. Это касается любых внутрипроцессных (in-process) COM-серверов, к которым относится и ActiveX.
2. ActiveX — это In-Process COM (DLL)Когда ваше 32-битное приложение создает объект ActiveX, оно загружает DLL-библиотеку этого объекта в свое собственное адресное пространство. Даже если этот объект предназначен для «встраивания Internet Explorer» (например, элемент управления WebBrowser), на самом деле загружается не отдельный процесс iexplore.exe, а библиотека рендеринга.
32-битная библиотека не может загрузить 64-битный код. Попытка создать 64-битный ActiveX из 32-битного приложения приведет к ошибке типа CLASS_E_CLASSNOTAVAILABLE или E_NOINTERFACE (система просто не найдет подходящий обработчик в реестре для вашей разрядности).
3. WebBrowser Control — здесь особая ситуацияЕсли вы используете элемент управления Microsoft WebBrowser (ieframe.dll / shdocvw.dll) внутри своего 32-битного приложения:
Вы всегда будете получать 32-битную версию рендеринга.
Этот контрол по умолчанию использует режим эмуляции Internet Explorer 7. Чтобы включить Edge Mode (современный рендеринг), вам нужно установить соответствующий ключ в реестре для вашего приложения (FEATURE_BROWSER_EMULATION).
Важно: Даже работая в 64-битной Windows, 32-битное приложение получит 32-битную версию WebOC, и она будет работать в своем 32-битном адресном пространстве.
Если вам кровно необходимо, чтобы 64-битный код взаимодействовал с вашим 32-битным приложением, это нельзя сделать через ActiveX. Придется использовать архитектуру «клиент-сервер», где общение идет через границы процесса (маршалинг):
Out-of-Process COM-сервер: Вы можете написать 64-битный COM-сервер в отдельном exe-файле, зарегистрировать его, и тогда ваша 32-битная программа сможет к нему обращаться через прокси (DCOM).
Вспомогательный процесс: Запустить 64-битный скрытый процесс и общаться с ним через сокеты, пайпы (Named Pipes), разделяемую память и т.д.
Если вы запустили 32-битный exe-файл, вся экосистема IE/ActiveX внутри него строго 32-битная. Заставить его использовать 64-битные библиотеки IE напрямую через ActiveX технологически невозможно.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/fiction-book-editor/df11b08a-04cb-499f-adb5-0f1c61a60c40n%40googlegroups.com.
WebOC — это устоявшееся в среде Windows-разработчиков сокращение от WebBrowser Control (Элемент управления WebBrowser).
Если раскрыть подробнее, то это не какой-то отдельный продукт, а программный компонент (COM-объект), который позволяет встроить полноценный движок браузера Internet Explorer в пользовательское приложение.
Вот основные технические детали, которые помогут понять его суть:
1. Это то же самое, что и Internet Explorer, но без рамкиWebOC использует те же DLL-библиотеки, что и настольный Internet Explorer (главная из них — mshtml.dll для рендеринга и ieframe.dll для интерфейса). По сути, это "движок IE", упакованный в ActiveX-элемент.
Любое приложение может разместить его у себя в окне и загружать HTML, выполнять JavaScript и отображать CSS так же, как это делает iexplore.exe.
2. Два классических способа созданияИсторически разработчики в Windows использовали два COM-класса:
Shell.Explorer.2 (CLSID 8856F961-340A-11D0-A96B-00C04FD705A2) — старый добрый элемент, уходящий корнями во времена Windows 95/98. Внутри него работает надстройка над shdocvw.dll.
Более новый WebBrowser (класс ieframe.dll) — современная реализация, которая используется в актуальных версиях Windows.
Самая неприятная особенность WebOC заключается в том, что по умолчанию он включает режим совместимости с Internet Explorer 7.
Это
значит, что даже если на компьютере установлен IE11, ваше приложение
будет рендерить контент как IE7, если вы не попросите его явно об
обратном. Это делается через настройку в реестре (FEATURE_BROWSER_EMULATION), где для вашего exe-файла указывается, под какую версию IE «притворяться».
Резюмируя: WebOC — это «кирпичик» Internet Explorer, который можно встроить в любое своё приложение, но который по умолчанию устаревший и требует специальных заклинаний, чтобы начать вести себя как современный браузер.
Чтобы 32-битное (или 64-битное) приложение, использующее WebBrowser Control, перестало притворяться IE7 и начало использовать современный движок (например, IE11), нужно прописать ваше приложение в реестре Windows.
Это делается через параметр FEATURE_BROWSER_EMULATION. Как только вы добавляете туда запись, WebOC начинает рендерить страницы согласно указанной версии, а не в режиме Strict IE7 по умолчанию.
Вот пошаговая инструкция.
Шаг 1. Узнайте точное имя exe-файлаВ реестре ключом является имя файла. Например:
MyApp.exe
YourProgram.exe
Важно использовать именно то имя, которое видит система в процессах (без пути к папке).
Шаг 2. Определите нужное значение (DWORD)Вам нужно выбрать число, которое соответствует желаемой версии Internet Explorer. Самые актуальные варианты:
Шаг 3. Выберите правильный раздел реестра (Разрядность!)Главный совет: Ставьте значение 11000.
Здесь самая частая причина ошибок. Если ваше приложение 32-битное (x86) и работает на 64-битной Windows, вам нужно использовать раздел для 32-битных приложений (Wow6432Node).
Вариант А: Для 64-битного приложения (или 32-битного на 32-битной Windows)
Вариант Б: Для 32-битного приложения на 64-битной Windows (ваш случай!)
Примечание: Также иногда можно использовать HKEY_CURRENT_USER (замените LOCAL_MACHINE на CURRENT_USER в пути выше), но тогда настройка будет действовать только для текущего пользователя.
Откройте regedit.exe.
Перейдите в нужный раздел (если папки FeatureControl нет, создайте её).
Кликните правой кнопкой мыши в правой панели и выберите: Создать → Параметр DWORD (32 бита).
Назовите его строго как ваш файл: MySuperApp.exe.
Откройте созданный параметр, переключите систему счисления на Десятичная и введите значение 11000.
Нажмите ОК.
Изменения вступают в силу только после полного закрытия и повторного запуска вашего приложения.
Иногда подмены режима рендеринга мало. Некоторые сайты (например, Google) могут продолжать считать браузер устаревшим по строке User-Agent. В IE/WebOC по умолчанию используется UA-строка IE7, если вы не изменили ее вручную.
Если после установки 11000 сайты все равно выглядят плохо или выдают ошибку доступа, нужно обновить UA. Для этого:
Создайте в том же месте (в папке FeatureControl) ключ с именем вашего файла в разделе FEATURE_DOCUMENT_COMPATIBLE_MODE (если его нет, создайте папку).
Задайте значение 0 (десятичное). Это заставит WebOC отдавать правильный, современный User-Agent.
Это должно заставить ваше приложение использовать полноценный IE11.
=== Конец цитаты ===--
Вы получили это сообщение, поскольку подписаны на группу "Fiction Book Editor".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес fiction-book-ed...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/fiction-book-editor/3a15ae6e-3d91-4c9b-ae16-1696dda14ca3n%40googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/fiction-book-editor/8305297e-76cf-4968-8d00-eca11b86b690n%40googlegroups.com.