문제

키오스크 응용 프로그램을위한 다소 간단한 OSK를 개발했습니다. .NET 앱에서 텍스트 상자에 의해 발사 된 OnFocus 이벤트를 열어 작동합니다. 문제는 단일 사인 온 서비스와 통합하려고 노력하는 것입니다. 즉, 타사 인증을 처리하기 위해 웹 브라우저 컨트롤을 열게됩니다. SSO 페이지의 텍스트 상자가 브라우저 컨트롤 내부에 있기 때문에 기존 OSK를 사용하는 가장 좋은 방법이나 가능 여부는 확실하지 않습니다.

나의 초기 생각은 내 응용 프로그램이 응답 할 수있는 이벤트를 추가하기 위해 일종의 JavaScript 주입을 시도하는 것입니다. 그런 다음 TextBox가 초점을 맞추고 OSK를 여는시기를 알 수 있어야합니다. OSK가 닫히면 입력 한 값으로 Form 필드를 업데이트 할 수 있습니다. 이것에 대한 나의 문제는 매우 깨지기 쉬운 것 같습니다. SSO 페이지에서 HTML/JS의 변경은 모든 키오스크의 로그인 프로세스를 망칠 수 있습니다.

내가 보는 다른 옵션은 내가 가진 OSK를 긁어 내고 낮은 레벨 1을 사용하는 것입니다. 이 접근법에서 볼 수있는 문제는 내가 찾는 OSK 소프트웨어의 열악한 프로그래밍 가능성입니다. 사용자로부터 키보드 입력을 가져와야 할 때마다 제 3 자 엑스를 시작해야하며 기존 솔루션에서 얻을 수있는 것만 큼 매끄럽지 않은 것처럼 보입니다.

WebControl을 사용해야 할 때마다 OSK를 사용하여 OSK를 사용하여 OSK를 사용하여 타사 OSK로 전환 할 수 있지만 모든 사람이 그 접근 방식의 문제를 볼 수 있다고 생각합니다.

어떤 길을 갈 것인지에 대한 조언/제안과 기존 OSK를 사용할 수 있도록 일반 JavaScript 주입을 구현하는 데 도움이되는 모든 도움이 될 것입니다!

도움이 되었습니까?

해결책

private void Form1_Load(object sender, EventArgs e)
{
    webBrowser1.ObjectForScripting = this;
    webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(LoadComplete);
    webBrowser1.Navigate("http://www.google.com");
}

public void LoadComplete(object sender, WebBrowserDocumentCompletedEventArgs args)
{
    foreach(HtmlElement input in webBrowser1.Document.GetElementsByTagName("input"))
    {
        if (input.GetAttribute("type").ToLower() == "text")
        {
            input.Click += new HtmlElementEventHandler(Clicked);
        }
    }
}

public void Clicked(object sender, HtmlElementEventArgs args)
{
    // Show OSK, Get Results Text
        (sender as HtmlElement).SetAttribute("value", oskText);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top