2009-05-30 4 views
1

私はキオスクアプリケーション用にかなり単純なOSKを開発しました。それは私たちのネットアプリのテキストボックスで発生したonfocusイベントを開くことによって動作します。問題は、シングルサインオンサービスと統合しようとしているということです。つまり、サードパーティ認証を処理するWebブラウザコントロールを開くことになります。 SSOページのテキストボックスはブラウザコントロールの中にあるので、既存のOSKを使用するための最良の方法であるとは思えません。.NET Kioskオンスクリーンキーボード

私の最初の考えは、私のアプリケーションが応答できるイベントを追加するために何らかの種類のjavascript注入を試みることです。次に、テキストボックスがフォーカスを受け取ったことを知ることができ、OSKを開くことができます。 OSKが閉じられると、入力された値でフォームフィールドを更新できます。私のこの問題はかなり壊れやすいようです。 SSOページのhtml/jsの変更は、すべてのキオスクのサインインプロセスを混乱させる可能性があります。

私が見る他のオプションは、私が持っているOSKをスクラップし、下位レベルのものを使用することです。私がこのアプローチで見られる問題は、私が見ているようなOSKソフトウェアのプログラム可能性が低いことです。基本的には、ユーザーからのキーボード入力を取得する必要があるときはいつでもサードパーティ製のexeを起動する必要があり、既存のソリューションを利用できるように統合が円滑ではないように見えます。

通常のwinformsコントロールでOSKを使用し、webcontrolを使用する必要があるときはいつでもサードパーティOSKに切り替えることができますが、誰もがその方法で問題を認識できると思います。

私は既存のOSKを使用できるようにするための一般的なJavaScript注入を実装する上でのアドバイスや提案は素晴らしいでしょう!

答えて

0
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); 
} 
関連する問題