.NET Kiosk屏幕键盘

问题描述:

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

我最初的想法是尝试某种JavaScript注入以添加我的应用程序可以响应的事件。然后,我应该能够知道文本框何时获得焦点并打开OSK。一旦OSK关闭,我可以用键入的值更新表单域。我的问题似乎很脆弱。在SSO页面上的html/js更改可能会导致所有信息亭的登录过程变得很糟糕。

我看到的另一个选项是废除我拥有的OSK并使用较低级别的OSK。我用这种方法看到的问题是我似乎发现的OSK软件的可编程性差。当我需要从用户那里获得键盘输入时,我基本上需要启动一个第三方exe,并且看起来不像我现有解决方案那样能够实现整合。

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

任何意见/建议走在哪条路上,以及任何有关实施通用JavaScript注入以帮助我使用现有OSK的帮助都很棒!

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); 
}