Realizando una aplicación simple, por lo que cuando el usuario cierra sesión en Windows, por supuesto, cierra la aplicación. Estamos haciendo una aplicación de alerta USB simple que DETIENE el apagado si se detecta un USB cuando el usuario cierra la sesiónWM_QUERYENDSESSION me está causando problemas
Este es el código hasta el momento.
public Form1()
{
InitializeComponent();
}
private static int WM_QUERYENDSESSION = 0x11;
private static bool systemShutdown = false;
protected override void WndProc(ref System.Windows.Forms.Message m)
{
if (m.Msg == WM_QUERYENDSESSION)
{
//MessageBox.Show("queryendsession: this is a logoff, shutdown, or reboot");
systemShutdown = true;
m.Result = (IntPtr)0;
}
// If this is WM_QUERYENDSESSION, the closing event should be
// raised in the base WndProc.
m.Result = (IntPtr)0;
base.WndProc(ref m);
} //WndProc
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (systemShutdown)
{
systemShutdown = false;
bool hasUSB = false;
foreach (DriveInfo Drive in DriveInfo.GetDrives())
{
if (Drive.DriveType == DriveType.Removable)
{
hasUSB = true;
}
}
if (hasUSB)
{
e.Cancel = true;
MessageBox.Show("You still have USB device plugged in, please unplug it and log off again");
}
else
{
e.Cancel = false;
}
}
}
Lo que ocurre es que los programas de Windows para la Fuerza Quit se está visualizando la pantalla, leí en alguna parte si vuelve a 0 WM_QUERYENDSESSION que no muestra esto, pero todavía se visualiza esto ...
¿Alguna idea?
EDIT:
se utilizó el código que alguien respondió con, pero todavía están recibiendo esta pantalla.
está impidiendo que el sistema se apague una buena idea en primer lugar? –
Pero estamos creando un programa, que si un usuario ha dejado un USB conectado, no pueden apagarlo o cerrar sesión hasta que lo eliminen. – x06265616e