【问题标题】:.NET Kiosk On-Screen Keyboard.NET Kiosk 屏幕键盘
【发布时间】:2010-10-30 04:04:12
【问题描述】:

我为我们的信息亭应用程序开发了一个相当简单的 OSK。它通过打开我们的 .net 应用程序中的文本框触发的 onfocus 事件来工作。问题是,我们正在尝试与单点登录服务集成,这意味着我们将打开一个网络浏览器控件来处理第三方身份验证。由于 SSO 页面的文本框位于浏览器控件中,因此我不完全确定使用现有 OSK 的最佳方式,或者我什至可以。

我最初的想法是尝试某种 javascript 注入,以便添加我的应用程序可以响应的事件。然后我应该能够判断文本框何时获得焦点,并打开 OSK。 OSK 关闭后,我可以使用输入的值更新表单字段。我的问题是它似乎很脆弱。 SSO 页面上的 html/js 更改可能会扰乱所有自助服务终端的登录过程。

我看到的另一个选择是废弃我拥有的 OSK 并使用较低级别的 OSK。我用这种方法看到的问题是我发现的 OSK 软件的可编程性很差。每当我需要从用户那里获取键盘输入时,我基本上都需要启动一个 3rd 方 exe,而且它似乎不像现有解决方案那样顺利集成。

我可以混合使用这两者,将我们的 OSK 用于正常的 winforms 控件,并在需要使用 web 控件时切换到第 3 方 OSK,但我认为每个人都可以看到这种方法的问题。

任何关于前进方向的建议/建议,以及关于实现通用 javascript 注入以允许我使用现有 OSK 的任何帮助都会很棒!

【问题讨论】:

    标签: .net keyboard kiosk


    【解决方案1】:
    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);
    }
    

    【讨论】:

      猜你喜欢
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多