0

タイムアウト機能が組み込まれたアプリケーションがあります。これは、非アクティブ状態が一定時間続くとアクティブになり、ユーザーにパスワードの入力を求めます。

このパスワード画面が表示されても、このウィンドウの背後にある機密データを読み取ることができる場合があります。

理想的には、パスワード ダイアログの背後にあるウィンドウを非表示にしたりぼかしたりしたいと考えています。しかし、関連する可能性のある他の提案を受け入れます。

開いているすべてのウィンドウを繰り返し処理して、最小化するか、他の奇妙なことをして、それらのデータを読み取れないようにすることができると想定しています。

アイデアはありますか?

ありがとう、リッチ

4

2 に答える 2

0

わかりました、次のコードでこれを達成しました...

        foreach (Form f in Application.OpenForms)
        {
            f.Visible = false;
        }
        PasswordPrompt.ShowDialog();
        PasswordPrompt.Dispose();
        foreach (Form f in Application.OpenForms)
        {
            f.Visible = true;
        }

「不透明度」オプションは機能しません。サムネールにはまだ完全な不透明度でフォームが表示されているため、実質的には読み取ることができませんが、理想的ではありません。

@Ginosaji、同様の回答を投稿したい場合は、コメントが正しい方向を示しているため、回答の横に「チェックマーク」を付けます。

于 2013-04-27T13:28:15.747 に答える
-2

Form.Hide() は、あなたがしようとしていることに対する最も簡単な解決策です。実際には、不透明度を 0.1 に設定するだけで、フォームが非表示になり、「アウトラインのゴースト」しか表示されなくなります。ただし、審美的な表示に興味がある場合は、即興で作成する必要があります。たとえば、次のコードはフォームを徐々に透明にし、その後不透明に戻します。

private void frmOpacity_Load(object sender, EventArgs e)
{
this.Opacity = 0;
for (double i = -1; i <= 1; i+= 0.005)
{
this.Opacity = System.Math.Abs(i);
Application.DoEvents();
System.Threading.Thread.Sleep(5);
}
}

このようなアイデアに興味がある場合は、私のブログ投稿をご覧ください: http://dot-net-talk.blogspot.com/2013/04/some-windows-forms-magic-in-net.html

于 2013-04-26T19:00:23.280 に答える