Держите IE на переднем плане в Windows CE - PullRequest
0 голосов
/ 02 октября 2018

У нас есть приложение киоска, работающее на пользовательских устройствах Windows CE 5 (которые больше не поддерживаются поставщиком).

Мы запускаем веб-приложение в Internet Explorer на устройстве.Это приложение использует пользовательский элемент управления ActiveX для некоторых операций (например, печать строки PCL на принтере, подключенном через USB).

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

Это не проблема, когда принтер запускается вместе с устройством, потому что IE запускается позже и перекрывает всплывающее окно.

Но это проблема, когда принтер (пере) запускается позже.Клиенты смущаются из-за всплывающего окна (вместо простого прикосновения к другой части пользовательского интерфейса, чтобы перевести его в фоновый режим).

Мои вопросы ( Неизвестное USB-устройство в Windows CE ) о том, как заставить замолчатьвсплывающее окно, где не удалось (и нет, я не хочу писать драйвер принтера для Windows CE только для того, чтобы удалить окно сообщения.

Поэтому я подумал, что мы можем выводить IE на передний план каждые несколько секунд, и написалнебольшая функция ActiveX, которая вызывается из таймера в веб-приложении.

STDMETHODIMP CEFTLink::makeForegroundWindow(void)
{
    HWND windowHandle;
    windowHandle=GetActiveWindow();
    SetForegroundWindow(windowHandle);
    return S_OK;
}

Абонент:

function StayForeground() { 
    window.setTimeout(StayForeground, 20000);
    eft.makeForegroundWindow();     
    };

Но этот код не достигает своей цели. Почему?

...