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