3

私は現在C#でアクセス制御プログラムに取り組んでおり、ウィンドウをブロックする問題に遭遇しました。私が思いついた元のアイデアは、プロセスのIntPtrウィンドウハンドルによって指定された位置にプレーンな黒いフォームをレンダリングすることです。その中の問題は、フォームの位置と位置のz-indexをスムーズに更新することです(私はそれを一番上にしたくないので)。また、ループを使用して常に位置をチェックしていたため、ソリューションでのリソースの使用量が途方もなく多いことに気付きました。

したがって、なぜ私は尋ねます:主要なリソースを食べずにこれのための最良の解決策は何でしょうか?エントリポイントは、実行中のプロセスの名前にすぎません。

現在、このアイデアはブラウザをブロックするだけです(つまり、講義がアクティブなときに気が散るのを防ぐための学校のアプリケーション)。

詳しくは:

  • 私は自分のアプリケーションでウィンドウを閉じるつもりはありません。他のプロセスからウィンドウを隠そうとしています。

  • 私のアプリケーションはウイルス/迷惑なプログラムではありません。本質的には、学校の環境で気が散る可能性のあるアプリケーションの使用を防ぐことを目的としています。学校のコンピュータラボでの講義用に作られています。

  • 現在、ブラウザのプロセス名でキャッチされたプロセスからメインウィンドウをプルしています。

  • コンピュータを完全に無効にすることもできません。

4

5 に答える 5

4

私は本当に嫌いです他のアプリケーションのウィンドウをいじろうとしているアプリケーションは嫌いです。申し訳ありませんが、これは非常に深いところから来ています。

私が考えることができる唯一のことは、現在のユーザーセッションをロックし、その状況で必要なこと以外は何もする権利がない別のアカウントに属する別のデスクトップにコンピューターを切り替えることです。

または、コンピューターの使用を完全に無効にすることが許容される場合は、すべてのモニターを教師の机の1つの電源スイッチに配置することができます。

于 2010-07-13T19:50:57.293 に答える
2

アプリケーションウィンドウを非表示にする場合は、3つのことを提案できます。まず、フォームのvisibleプロパティをtrueに設定し、hide()メソッドを呼び出してみてください。2つ目は、フォームの透明度を100%に設定すると、フォームが非表示になります。3つ目は、アプリケーションをWindowsフォームアプリケーションではなくWindowsサービスにする必要があると考えてください。

アプリケーションが常に最上位になるように他のウィンドウを非表示にする場合は、フォームでTopMostプロパティをtrueに設定します:http://msdn.microsoft.com/en-us/library/system.windows.forms.form .topmost(VS.71).aspx

これも役立つかもしれません:http://www.codeproject.com/KB/cs/windowhider.aspx

于 2010-07-13T19:47:49.657 に答える
1

Windows APIを使用して、問題のあるウィンドウを非表示にすることができます。 user32.showwindow

正確にはあなたが求めていたものではありませんが、もっと簡単かもしれません。

于 2010-07-13T19:49:08.547 に答える
1
   [DllImport("user32.dll")]
   static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); 

   static void MinimizeProcess(string procName)
    {
        foreach (Process p in Process.GetProcesses())
        {
            if (p.ProcessName == procName)
            {
                ShowWindow(p.MainWindowHandle,11);

            }
        }
    }

プロセス名の配列がある場合は、これをリファクタリングして配列を取り込んで、最小化したいすべてのプロセスをループしないようにしますが、アイデアは得られます。

于 2010-07-13T20:05:32.950 に答える
-2

できるよ:

this.Hide()

this.Visible = false;

または、これが表示したくないメインの場合は、アプリの起動時にフォーラムを実行しないでください。

于 2010-07-13T19:41:40.537 に答える