-1
DialogResultを前面に表示する方法 以下は私のフォームです。私は他のすべてのアプリケーションを実行する前にそれを持っていきたい。 しかし、デバッグモードでは動作していますが、「デバッグモードなしで実行」では動作しません。DialogResult結果を前面に表示する方法
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace XYZ
{
public partial class Form2 : Form
{
[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("user32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
public static extern bool SetForegroundWindow(IntPtr hwnd);
public Form2()
{
InitializeComponent();
}
static Form2 MsgBox; static DialogResult result = DialogResult.No;
public static DialogResult Show(/*string Text, string Caption, string btnOK, string btnCancel */)
{
MsgBox = new Form2();
MsgBox.FormBorderStyle = FormBorderStyle.None;
result = DialogResult.No;
MsgBox.TopMost = true;
try
{
SetForegroundWindow(MsgBox.Handle);
System.Media.SystemSounds.Beep.Play();
MsgBox.TopLevel = true;
MsgBox.ShowDialog(MsgBox.ParentForm);
}
catch (Exception ex)
{
LogHelper.WriteFatalLog("Show", ex);
}
return result;
}
private void Form2_Load(object sender, EventArgs e)
{
}
private void btnLoginF2_Click(object sender, EventArgs e)
{
Program.username = txtUserNameBtn.Text;
Program.password = txtPassBtn.Text;
result = DialogResult.Yes; MsgBox.Close();
}
}
}
hereに語ったように私は
try
{
Util.TaskHide(0);
Util.KillCtrlAltDelete();
Util.KillTaskManager();
// ShowWindow(hwnd,0);
}
catch (Exception ex)
{
// MessageBox.Show(ex.Message);
LogHelper.WriteErrorLog("Hide Kill Manage", ex);
}
Form2.Show();
// Program.mfLogin.Hide();
try
{
Util.TaskHide(1);
Util.EnableCTRLALTDEL();
}
catch (Exception ex2)
{
MessageBox.Show(ex2.Message);
LogHelper.WriteErrorLog("Show Pamper Leave", ex2);
}
ストップシステムをハックしようと道必要以上に複雑さも適切にオブジェクトを配置していないような悪いコードを書く...一般 – Phil1970
は、置くことは悪いデザインです他のアプリケーションの前にあるフォーム。システムとユーザーを尊重しないアプリケーションは作成しないでください。 – Phil1970
チルブロ、それはクライアントの要求です。 –