@RemyLebeau Я отправлю вопрос. Кажется, они полагаются на JEDI для преобразования заголовков для них.

аюсь отключить раздражающий звук при нажатии на ссылку в элементе управления WebBrowser, БЕЗ изменения реестра пользователей. Я нашел документацию, что это можно сделать черезCoInternetIsFeatureEnabledтакже объяснилВот, Но я понятия не имею, как реализовать это в Delphi 2010, так как я получаю ошибку «Undeclared Identifier» после включения модуля URLMon в проект и не так много документации там.

Есть идеи?

 GManNickG21 янв. 2011 г., 00:21
Что такоеcpp тег для?
 Elias16 янв. 2011 г., 10:25
Да, я пытаюсь получить некоторый свет от этого кода, но пока не очень много удачи ... это от embededWB (который я не хочу использовать в моем приложении), но я все еще не могу сделать так, чтобы CoInternetIsFeatureEnabled работал в Delphi
 Mikael Eriksson15 янв. 2011 г., 23:01
Вы можете получить несколько советов на этой странице.koders.com/delphi/...

Ответы на вопрос(1)

CoInternetIsFeatureEnabled() а такжеCoInternetSetFeatureEnabled() не включены в копию UrlMon.pas D2010. Вы должны будете объявить их вручную, например:

  GET_FEATURE_FROM_THREAD = $00000001;
  GET_FEATURE_FROM_PROCESS = $00000002;
  GET_FEATURE_FROM_REGISTRY = $00000004;
,  GET_FEATURE_FROM_THREAD_LOCALMACHINE = $00000008;
  GET_FEATURE_FROM_THREAD_INTRANET = $00000010;
  GET_FEATURE_FROM_THREAD_TRUSTED = $00000020;
  GET_FEATURE_FROM_THREAD_INTERNET = $00000040;
  GET_FEATURE_FROM_THREAD_RESTRICTED = $00000080;

  SET_FEATURE_ON_THREAD = $00000001;
  SET_FEATURE_ON_PROCESS = $00000002;
  SET_FEATURE_IN_REGISTRY = $00000004;
  SET_FEATURE_ON_THREAD_LOCALMACHINE = $00000008;
  SET_FEATURE_ON_THREAD_INTRANET = $00000010;
  SET_FEATURE_ON_THREAD_TRUSTED = $00000020;
  SET_FEATURE_ON_THREAD_INTERNET = $00000040;
  SET_FEATURE_ON_THREAD_RESTRICTED = $00000080; 

type
  INTERNETFEATURELIST = (
    FEATURE_OBJECT_CACHING,
    FEATURE_ZONE_ELEVATION,
    FEATURE_MIME_HANDLING,
    FEATURE_MIME_SNIFFING,
    FEATURE_WINDOW_RESTRICTIONS,
    FEATURE_WEBOC_POPUPMANAGEMENT,
    FEATURE_BEHAVIORS,
    FEATURE_DISABLE_MK_PROTOCOL,
    FEATURE_LOCALMACHINE_LOCKDOWN,
    FEATURE_SECURITYBAND,
    FEATURE_RESTRICT_ACTIVEXINSTALL,
    FEATURE_VALIDATE_NAVIGATE_URL,
    FEATURE_RESTRICT_FILEDOWNLOAD,
    FEATURE_ADDON_MANAGEMENT,
    FEATURE_PROTOCOL_LOCKDOWN,
    FEATURE_HTTP_USERNAME_PASSWORD_DISABLE,
    FEATURE_SAFE_BINDTOOBJECT,
    FEATURE_UNC_SAVEDFILECHECK,
    FEATURE_GET_URL_DOM_FILEPATH_UNENCODED,
    FEATURE_TABBED_BROWSING,
    FEATURE_SSLUX,
    FEATURE_DISABLE_NAVIGATION_SOUNDS,
    FEATURE_DISABLE_LEGACY_COMPRESSION,
    FEATURE_FORCE_ADDR_AND_STATUS,
    FEATURE_XMLHTTP,
    FEATURE_DISABLE_TELNET_PROTOCOL,
    FEATURE_FEEDS,
    FEATURE_BLOCK_INPUT_PROMPTS,
    FEATURE_ENTRY_COUNT
  );

function CoInternetIsFeatureEnabled(FeatureEntry: INTERNETFEATURELIST; dwFlags: DWORD): HRESULT; stdcall; external 'urlmon.dll'
function CoInternetSetFeatureEnabled(FeatureEntry: INTERNETFEATURELIST; dwFlags: DWORD; fEnable: BOOL): HRESULT; stdcall; external 'urlmon.dll'

begin
  if CoInternetIsFeatureEnabled(FEATURE_DISABLE_NAVIGATION_SOUNDS, GET_FEATURE_FROM_PROCESS) = S_FALSE then
    CoInternetSetFeatureEnabled(FEATURE_DISABLE_NAVIGATION_SOUNDS, SET_FEATURE_ON_PROCESS, True); 
end;
 Remy Lebeau28 сент. 2013 г., 21:57
Вам нужно будет спросить об этом Embarcadero и подать заявку на QC, чтобы указать недостающие интерфейсы.
 Remy Lebeau29 мар. 2011 г., 22:45
Я исправил фрагмент.
 user164741129 сент. 2013 г., 00:10
@RemyLebeau Я отправлю вопрос. Кажется, они полагаются на JEDI для преобразования заголовков для них.
 user164741128 сент. 2013 г., 18:45
@RemyLebeau В XE4 и XE5 в UrlMon отсутствует множество интерфейсов. Интересно, почему он не обновляется, хотя его от Embarcadero? НапримерIInternetBindInfoEx,IInternetProtocolEx,IUri Просто назвать несколько.
 Darian Miller29 мар. 2011 г., 18:46
Для справки, я считаю, что это работает, если логика изменена: фрагмент проверяет, включена ли функция, и если да, включите ее. Следует проверить, не включена ли эта функция, а затем включить ее. (Для этого сценария вместо тестирования по S_OK, тест по S_FALSE)

Ваш ответ на вопрос