即使按下ALT + TAB,如何强制设置对Form的关注

时间:2014-09-06 02:17:39

标签: c# forms

我正在实现一个程序,在系统启动时应该打开一个表单,用户应该在某些表单字段中输入数据,然后只有用户才能访问系统中的信息。我将此程序添加到任务计划程序,以便在系统启动时执行程序。 在系统启动时强制用户填写表单字段的任何帮助吗?

2 个答案:

答案 0 :(得分:0)

你不能这样做。 Windows不允许这种情况发生。如果这是允许的,并且两个程序试图同时执行此操作,则无法确定它将如何影响您的系统。

答案 1 :(得分:0)

实际上您的问题不明确,最好提供有关您的方案的更多信息

但我会尝试提供一些信息。

1-您可以使用以下代码使应用程序在Windows启动应用程序中运行

  RegistryKey key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true));

            key.SetValue("My Program", "\"" + Application.ExecutablePath + "\"");

2-然后你可以让你的程序在最顶层运行

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace LicenseManager {

  public static class WinApi {

    [DllImport( "user32.dll" )]
    static extern bool SetWindowPos( IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags );

    static private IntPtr HWND_TOPMOST = new IntPtr( -1 );

    private const uint SWP_NOSIZE = 0x0001;
    private const uint SWP_NOMOVE = 0x0002;

    static public void MakeTopMost( Form f ) {
      SetWindowPos( f.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE );
    }

  }
}

3-并且您可以阻止用户关闭应用程序,直到他通过在结束活动时检查您的登录信息输入所需数据

private void Form2_FormClosed(object sender, FormClosedEventArgs e)
    {
        DialogResult userAnswer = MessageBox.Show ("Do you wish to close ALL " + counterLabel.Text + " of the 'Form2' forms?", "Close ALL Forms?", 
            MessageBoxButtons.YesNo, MessageBoxIcon.Question);

        if (userAnswer == DialogResult.Yes)
            this.Dispose();
    }