У меня есть приложение WPF, которое будет работать в киоске на ПК с сенсорным экраном. Приложение работает в полноэкранном режиме, чтобы скрыть ОС. На одной из моих страниц у меня есть элемент управления WebBrowser, который позволяет пользователю просматривать некоторые веб-страницы (навигация ограничена некоторыми страницами). Поскольку компьютер будет размещен в общедоступном месте, я не должен позволять пользователю доступ к операционной системе. Дело в том, что сенсорный экран позволяет щелкнуть правой кнопкой мыши в веб-браузере, что в конечном итоге приводит к появлению панели задач ... не очень хорошо ...!
Я безуспешно пытался отключить это контекстное меню в течение последних дней. В основном, где я сейчас нахожусь:
Добавлена ссылка COM на SHDocVw.dll для получения интерфейса IWebBrowser2 (необходим для отключения запуска новых окон.
[ComImport, InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
[Guid ("6d5140c1-7436-11ce-8034-00aa006009fa")]
внутренний интерфейс IServiceProvider
{
[return: MarshalAs (UnmanagedType.IUnknown)]
объект QueryService (ref Guid guidService, ref Guid riid);
}
статический только для чтения Guid SID_SWebBrowserApp = новый Guid ("0002DF05-0000-0000-C000-000000000046");
Получить интерфейс IWEbBrowser2
IServiceProvider _serviceProvider = null;
if (_browser.Document! = null)
{
_serviceProvider = (IServiceProvider) _browser.Document;
Guid _serviceGuid = SID_SWebBrowserApp;
Guid _iid = typeof (SHDocVw. IWebBrowser2) .GUID;
SHDocVw.IWebBrowser2 _webBrowser = (SHDocVw.IWebBrowser2) _serviceProvider.QueryService (ref _serviceGuid, ref _iid);
И попробуйте отключить контекстное меню в документе.
HTMLDocument doc = _webBrowser.Document as HTMLDocument;
mshtml.HTMLDocumentEvents2_Event ev = doc as mshtml.HTMLDocumentEvents2_Event;
ev.oncontextmenu + = (arg) => {return ложный; };
Пока безуспешно ... есть идеи?
Заранее спасибо.