Перевод interface not supported

Перевод interface not supported

Уважаемые мастера. Вы не знакомы с этой ошибкой, почему и как?
Один ком «общается» с другим комом в сети. Сервера зарегистрированы, права розданы в dcomcnfg. При попытке обращения к методу кома на другом компе возникает эта ошибка. Вызов с XP на 2000-ный, ошибка на XP. Заранее, спасибо.


А. Н. Оним ( 2002-08-05 17:13 ) [1]

Не помню точно, но кажется именно такая ошибка вылезает в следующей ситуации: идёт использование не Ole-совместимых (Oleautomation) интерфейсов и прокси отсутствует у клиента. То есть клиент достукивается до IUnknown, а вот перейти к другому уже и впрямь не может — нет нужного прокси. Правда, это маловероятно, так как состряпать подобный интерфейс в Delphi мне не удавалось. Поэтому вероятней другое.
Ты создал интерфейс, но снял со вкладки OleAutomation галочку.
Теперь после регистрации сервера, насколько я заметил, вкладка в реестре с интерфейсом вообще не появляется в разделе HKEY_CLASSES_ROOT\Interface\. И при обращении между аппартаментами или процессами, то есть в тот момент, когда необходимо создание прокси для клиента и стаба для сервера
SCM не знает, откуда взять нужную прокси/стаб DLL. Всё, что в таком случае необходимо, это поставить галочку, обновить TypeLib и перерегистрировать сервак. Теперь при регистрации интерфейс будет появляться в реестре и сообщать о своём классе стаба.
HKEY_CLASS_ROOT\Interface\\ProxyStubCLSID32
По этому классу SCM будет грузить сервер с реализацией и всё заработает.
Любопытно, Delphi не позволяет строить неOle-совместимые интерфейсы, но позволяет метить их как неOle-совместимые. Зачем? Дело в том, что в Delphi может идти разработка сервера, который и в действительности реализует неOle-совместимые интерфейсы. Для этого можно например импортнуть чужой TypeLib, где такие интерфейсы водятся, затем создать наследника от такого интерфейса, а ProxyStub Dll позаимствовать со стороны. Совсем недавно мне пришлось именно так и поступить.

Добрый день\утро\ночь А. Н. Оним.
Действительно, делфя позволяет строить не OleAutomation. Но, к сожалению,галочка поставлена.


А. Н. Оним ( 2002-08-06 15:32 ) [3]

Я нашёл ещё несколько глупых, но очень действенных способов создания подобной ошибки: не сочти за издевательство, но сейчас я расскажу как этого добиться даже в «тепличных» условиях:
Итак, мы создали Application, добавили в него COM объект, описали интерфейс, сгенерили реализацию методов, убедились, что интерфейс помечен как OleAutomation. Зарегестрировали сервер MyServer.exe /RegServer. Пусть модуль с коклассом реализован примерно так:

uses
Windows, ActiveX, . MyServer_TLB; // библиотека типов на PAS
type
TTest = class(TTypeComObject, IMyInterface)
protected
function MyFunction(. ): HResult .
end;

Способ 1:
Удалить из списка наследования интефейс IMyInterface. Все его методы теперь станут родными методами класса TTest и компилятор для сервера даже не обругнётся. А вот клиент эту разницу ощутит 😉

Способ 2:
После создания сервера дать клиенту файл MyServer_TLB, затем подумать о каких-нибудь новшествах в сервере, удалить из TypeLib сервера интерфейс MyInterface, затем, спохватившись, его заново набить (и получить новый IID) и долго безуспешно пытаться соединить клиента с сервером по старому IID.

Это всё глупости, конечно, но кто знает? А вообще убедись, что интерфейс сервера зарегестрирован на клиенте. Пошарь в реестре клиента вкладку HKEY_CLASSES_ROOT\Interface и если не найдёшь интересующий клиента IID то всё понятно. Такой ситуации можно добиться например так (даже совсем не нарочно):
Сервер разрабатывался на одной станции, а клиент на другой. Для разработки клиента я просто перетащил отображение TypeLib сервера на PAS и подцепил его в клиентский проект. Теперь зарегестрировал сервер и пытаюсь (безуспешно) дотянуться до его интерфейсов с клиента. А интерфейсы сервера на клиенте и не зарегестрированы. И откуда брать клиенту прокси (даже если это стандартный прокси для интерфейсов OleAutomation) тоже не ясно.
Я бы делал так:
1. Гляжу клиентский реестр в поиске нужного клиенту интерфейса
Если его там нет, то регистрирую сервер на клиенте (потом пытаюсь удалить сервер физически — никогда так не делал, обычно оставлял)
2. Интерфейс есть, но ничего не работает. Тащу сервер на клиента и смотрю на одной машине.

Спасибо за «А вообще убедись, что интерфейс сервера зарегестрирован на клиенте»:)..ошибки нет, тока терь клиент виснет..кошмар:) наверно, опять чтото намудрил.

Так в этом было дело?
Повисание дело обычное, если работаешь с потоками и мудришь с аппартаментами. У тебя что-то многопоточное? Получил, наверное обычный deadlock. При повисании и прочих непонятных ошибках на вызове я всегда проверяю, дошёл ли вызов до сервера или нет. И ушёл ли с него.
На самом деле, (это только моё мнение), в качестве учебной среды выбирать delphi для изучения Com не стоит. Дело не только в том, что большинство книжек по COM, которые я видел, аппелируют к MSVC, а книги по Delphi рассматривают это слишком верхоглядно и дают слабые теоретические основы, но в том, что Delphi настолько круто инкапсулирует работу с COM в своих классах (а те настолько круто привязаны к TypeLib»у проекта), что у меня часто возникало ощущение — «меня водят за нос». Особенно становится весело, когда приходится в Delphi реализовывать что-то непредвиденное и в литературе по delphi не описанное. Например принимание Sink»ов сервером, интерфейсы которых не описаны в TypeLib»е проекта. Я потратил часа 3, а то и все 5, разглядывая то, насколько Delphi круто дурачит меня своими классами.
Реккомендую MSVC или C++ Builder. Кажется, ATL у них один и тот же. Из книг для начала — Дональда Бокса «Сущность технологии COM» (как чисто теоретическую), Трельсена «COM и ATL 3.0» (как прикладную, нет хорошей теории, нет хорошей практики, но применение ATL действительно разобрано, хотя и на простых примерах, а главное — многи примеры создаются с нуля, безо всяких Wizard»ов). Удачи!

Спасибо за совет. Действительно, дока нормального для «учеников» по этому делу не находил, и не найду наверно, и то что в делфях много пантов а толку мало (как я понял из твоего мнения) — согласен. Всё что у меня есть — это демки по этой теме:) + хорошее знание delphi и опыт в рамках создания приложении не по этой теме:).


А. Н. Оним ( 2002-08-06 17:26 ) [7]

Да нет, не в понтах никаких дело. Вообще не понятно, что значит среда понтовая и не понтовая? Критерий понтовости для среды разработки представить сложно.
Мне приходилось разрабатывать сервера в MSVC и в Delphi, и Delphi как средство разработки мне сейчас нравится куда больше (симпатии выражаю и Builder»у), нежели MSVC.
Что особенно радует в Delphi, так это скорость разработки, работа со строками и отсутствие (вернее, меньшее наличие) возможностей насажать лики, т.е. утечки памяти. Бонусы визуального программирования с VCL также имеют свой вес в моих глазах против MSVC/MFC. Безусловно, smart pointer»ы в C++ и шаблоны ATL помогают избавиться от «глупостей» невинимательности, но в Delphi это всё куда лаконичней. Однако, за лаконичность стоит расплачиваться непонятной реализацией этой самой лаконичности, а отсутствие литературы только всё усугубляет. Программист уподобляется волшебнику, который тыкнет там и здесь и всё по-волшебству заработает. Хорошо, если такой «волшебник» был когда-то хорошим подмастерьем со стажем, но если подмастерью дать волшебную палочку то всё выйдет как в песни Аллы Пугачёвой «сделать хотел грозу, а получил козу». Но это всё лирика.

Источник

Как исправить ошибку Input Not Supported

Иногда при запуске системы или какой-то ресурсоёмкой и старой игры вместо нормального изображения внезапно появляется чёрный экран с серой плашкой, на которой написано: Input Not Supported. Т.е., вам дают понять, что продолжать работу невозможно, так как монитор не может показать изображение. Тем не менее как бы устрашающе не выглядело чёрное окно – оно не фатально, есть способы избавиться от этой ошибки.

Устранение ошибки Input not supported.

Почему появляется Input Not Supported

Если вы уже заподозрили в неисправности монитор – напрасно: проблема, скорее, кроется в драйверах, некорректной настройке или попытке игры выставить свои требования к работе видеокарты. Input Not Supported может появиться на мониторах любых фирм: Acer, Asus, Lenovo и т. п. Алгоритм исправления ошибки будет приблизительно одинаковым для всех. Появление серой плашки с надписью о прекращении поддержки ввода означает, что на экране не удаётся показать изображение и при этом соблюсти выставленные пользователем (или другим ПО, или системой) условия разрешения, соотношения сторон, качества и т. д. Это значит, что вы так ничего и не увидите, пока не предпримите попыток для улучшения ситуации, и доступ к обычным функциям компьютера получить не сможете.

Как исправить ошибку

Первым делом проверьте, не нажали ли вы на мониторе какую-нибудь кнопку с набором параметров, помешавших в дальнейшем нормальной загрузке изображения. Особенно это касается стационарных ПК. Уберите все пользовательские настройки, выбрав что-то вроде «Авто» или «Стандарт», переключая клавиши на самом мониторе (они могут быть сбоку или снизу, как, например, у BQ).

Input Not Supported при включении компьютера

Если ошибка настигла вас при включении компьютера, чтобы визуализировать «Десктоп» и получить возможность что-то исправить, нужно перейти в «Безопасный режим» (перезагрузитесь и жмите F8 или другую клавишу, которая указана в вашей версии БСВВ).

Удаление видеодрайвера

  1. Теперь нажмите Win+R и в появившейся строке напишите: «devmgmt.msc» (без кавычек), нажмите ОК.
  2. Поищите в списке установленный графический адаптер и кликните по нему ПКМ, разверните «Свойства».
  3. Здесь нас интересует вкладка, посвященная драйверам.
  4. Выберите опцию Uninstall и согласитесь с действием.

Таким образом, если ошибка Input Not Supported была следствием странного поведения драйверов, что происходит нередко, делать больше ничего не придется – после перезапуска ОС изображение восстановится. Чтобы ничего из старых и поврежденных файлов не осталось, нужно убрать дополнительное ПО, которое инсталлировалось вместе с драйверами – как правило, это медиаплееры. В общем списке программ их трудно найти, но для этого есть специальные приложения, типа Uninstall Tool. После удаления нужно перезапустить систему в обычном режиме и проверить результат. Система сама установит драйвера заново.

Настройка вывода изображения

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

  1. Поговорим о том, как это исправить и устранить последствия неверной настройки.
  2. Кликните в любом свободном месте «Десктопа» ПКМ и выберите Screen Setting.
  3. Верните ползунок на то место, где есть надпись: «Recommended».
  4. Находим в этом же окошке Advanced Setting и выставьте для Screen refresh rate значение «75» (или 60, если у вас старая модель, но лучше проверить себя, поискав в интернете достоверные параметры, подходящие к конкретному монитору).

Input Not Supported при запуске игры

Иногда Input Not Supported появляется непосредственно при запуске игры. Дело в том, что на каждой версии Windows установлен пакет API для работы со сложными игровыми мультимедиа, и он мог устареть. В этом случае попробуйте следующее:

  1. Зайдите на сайт Microsoft и найдите update-пакет для DirectX.
  2. Скачайте и установите его.
  3. Перезагрузите ПК и запустите игру еще раз.

Бывает и так, что в дистрибутивах игр содержатся файлы, которые сами меняют разрешение экрана как им заблагорассудится. Чтобы вернуть настройки к стандартному состоянию выполните следующий порядок действий:

Источник

Решение проблемы с сообщением «Input Not Supported» на мониторе

Устранение ошибки «Input Not Supported»

Для начала разберемся в причинах появления такого сообщения. Собственно, она только одна – разрешение, выставленное в настройках видеодрайвера, блоке системных параметров экрана или в игре не поддерживается используемым монитором. Чаще всего ошибка появляется при смене последнего. Например, вы работали на мониторе с разрешением 1280х720 с частотой обновления экрана 85 Гц, а потом по каким-то причинам подключили к компьютеру другой, с большим разрешением, но 60-герцовый. Если максимальная рабочая частота обновления вновь подключенного устройства меньше, чем предыдущего, то мы получим ошибку.

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

Далее мы разберем варианты устранения причин появления сообщения «Input Not Supported».

Способ 1: Настройки монитора

Во всех современных мониторах есть предустановленное программное обеспечение, позволяющее выполнять различные настройки. Делается это с помощью экранного меню, которое вызывается соответствующими кнопками. Нас интересует опция «Auto». Она может располагаться в одном из разделов либо иметь собственную отдельную кнопку.

Минус данного способа заключается в том, что он работает только при подключении монитора аналоговым способом, то есть через VGA кабель. Если подключение цифровое, то эта функция будет неактивна. В этом случае поможет прием, который будет описан ниже.

Способ 2: Режимы загрузки

Для мониторов, использующих цифровые технологии, наиболее эффективным способом устранения ошибки является принудительная загрузка в режим, по умолчанию поддерживаемый устройством. Это, в разных вариантах, режим VGA или включение самого низкого разрешения. В обоих случаях все сторонние драйвера или другие программы, управляющие разрешением и частотой обновления, запущены не будут и, соответственно, не будут применены их настройки. Также произойдет сброс параметров экрана.

Windows 10 и 8

Для того чтобы попасть в меню загрузки на компьютере с одной из этих ОС, необходимо при старте системы нажать сочетание клавиш SHIFT+F8, но такой прием может не сработать, так как скорость загрузки очень высока. Пользователь попросту не успевает послать соответствующую команду. Выхода здесь два: загрузиться с установочного диска (флешки) или применить одну хитрость, о которой чуть позже.

    После загрузки с диска, на самом первом этапе, нажимаем сочетание клавиш SHIFT+F10, вызывая «Командную строку», где прописываем вот такую строчку:

bcdedit /set displaybootmenu yes

После ввода жмем ENTER.


Закрываем окна «Командной строки» и инсталлятора, который спросит, действительно ли мы хотим прервать установку. Соглашаемся. Компьютер будет перезагружен.


После загрузки мы попадем на экран выбора ОС. Здесь нажимаем F8.


Далее выбираем «Включить видеорежим с низким разрешением» клавишей F3. ОС немедленно начнет загрузку с данными параметрами.

Для отключения загрузочного меню запускаем «Командную строку» от имени администратора. В Windows 10 это делается в меню «Пуск – Служебные – Командная строка». После нажатия ПКМ выбираем «Дополнительно – Запуск от имени администратора».

В «восьмерке» жмем ПКМ по кнопке «Пуск» и выбираем соответствующий пункт контекстного меню.

В окне консоли вводим команду, указанную ниже, и нажимаем ENTER.

bcdedit /set displaybootmenu no

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

    При старте ОС, то есть после появления экрана загрузки, нужно нажать кнопку «Reset» на системном блоке. В нашем случае сигналом к нажатию будет появление ошибки. Это значит, что ОС начала загрузку компонентов. После того как данное действие будет выполнено 2–3 раза, на экране появится загрузчик с надписью «Подготовка автоматического восстановления».


Дожидаемся загрузки и жмем кнопку «Дополнительные параметры».


Идем в «Поиск и устранение неисправностей». В Windows 8 этот пункт называется «Диагностика».


Снова выбираем пункт «Дополнительные параметры».


Далее нажимаем «Параметры загрузки».


Система предложит перезагрузиться, чтобы дать нам возможность выбора режима. Здесь жмем кнопку «Перезагрузить».


После рестарта с помощью клавиши F3 выбираем нужный пункт и ждем загрузки Windows.

Windows 7 и XP

Запустить «семерку» с такими параметрами можно, нажав при загрузке клавишу F8. После этого появится вот такой черный экран с возможностью выбора режима:

Или такой, в Виндовс XP:

Здесь стрелками выбираем нужный режим и нажимаем ENTER.

После загрузки необходимо переустановить драйвер видеокарты с обязательным предварительным его удалением.

Если воспользоваться средствами, описанными в статье выше, не представляется возможным, то драйвер нужно удалить вручную. Для этого воспользуемся «Диспетчером устройств».

    Нажимаем сочетание клавиш Win+R и вводим команду


Выбираем видеокарту в соответствующей ветке, кликаем по ней ПКМ и выбираем пункт «Свойства».


Далее, на вкладке «Драйвер» нажимаем кнопку «Удалить». Соглашаемся с предупреждением.


Также желательно деинсталлировать и дополнительное ПО, поставляемое вместе с драйвером. Делается это в разделе «Программы и компоненты», который можно открыть из той же строки «Выполнить» командой

Здесь находим приложение, кликаем по нему ПКМ и выбираем «Удалить».

Если карта от «красных», то в этом же разделе нужно выбрать программу «AMD Install Manager», в открывшемся окне поставить все галки и нажать «Удалить» («Uninstall»).

После деинсталляции программного обеспечения перезагружаем машину и заново устанавливаем драйвер видеокарты.

Подробнее: Как обновить драйвер видеокарты на Windows 10, Windows 7

Заключение

В большинстве ситуаций приведенные рекомендации позволяют избавиться от ошибки «Input Not Supported». Если же ничего не помогает, то необходимо попробовать заменить видеокарту на заведомо исправную. В том случае, если ошибка повторяется, придется обратиться с вашей проблемой к специалистам сервисного центра, возможно, дело в неисправности самого монитора.

Источник

Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Uchenik.top - научные работы и подготовка
0 0 голоса
Article Rating
Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии