如何防止Windows在.NET中显示?

时间:2010-07-13 19:38:24

标签: c# .net blocking access-control

我目前正在使用C#中的访问控制程序,我遇到了阻止窗口的问题。我想出的最初想法是在过程的IntPtr窗口句柄给出的位置上呈现纯黑色形式。其中的问题是平滑地更新表单的位置和位置的z-index(我不希望它位于最顶端)。我也注意到我的解决方案资源使用率非常高,因为我使用循环来不断检查位置。

这就是为什么我要问:如果不吃主要资源,最好的解决办法是什么呢?入口点只是正在运行的进程的名称。

目前这个想法只是阻止了浏览器(IE:一个学校的应用程序,以防止讲座活动时分心)。

更多信息:

  • 我不打算关闭一个窗口 我自己的应用程序,我正在尝试 来自其他进程的模糊窗口。

  • 我的申请不是 病毒/恼人的程序,它的 本质上是为了防止使用 可能分散注意力的应用 在学校环境中。它是制作的 在学校的电脑上讲课 实验室。

  • 我正在拉主窗口 从过程中捕获的 浏览器的进程名称。

  • 我无法完全禁用计算机。

5 个答案:

答案 0 :(得分:4)

我真的很讨厌讨厌任何试图乱用其他应用程序窗口的应用程序。对不起,这来自非常深刻。

我能想到的唯一合情合理是锁定当前的用户会话,并将计算机交换到属于另一个帐户的另一个桌面,除了在这种情况下所需要的任何内容之外无权做任何事情。

或者,如果完全禁用计算机是可以接受的,您可以将所有显示器放在教师桌面上的单个电源开关上。

答案 1 :(得分:2)

如果您想要隐藏应用程序窗口,我可以建议3件事。首先,尝试将表单的visible属性设置为true并调用hide()方法。第二件事是将表单的透明度设置为100%,这将隐藏它。第三,可能认为您的应用程序应该是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

答案 2 :(得分:1)

您可以使用windows api隐藏违规窗口。 user32.showwindow

不完全是你要求的,但可能更简单。

答案 3 :(得分: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);

            }
        }
    }

如果你有一个进程名称数组,你显然想要重构这个以接收一个数组,这样你就不会遍历每个进程来处理你想要最小化的一切,但是你明白了。

答案 4 :(得分:-2)

你可以这样做:

this.Hide()

this.Visible = false;

或者如果这是你不想展示的主要内容,那么在你启动应用程序时就不要运行论坛。