Tworzenie prostej aplikacji, więc gdy użytkownik wyloguje się z systemu Windows, to oczywiście zamyka aplikację. Tworzymy prostą aplikację USB Alert, która wyłącza się STOPS, jeśli wykryto USB, gdy użytkownik wylogowuje się.WM_QUERYENDSESSION sprawia mi problemy
To jest kod do tej pory.
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;
}
}
}
Co się dzieje jest to, że programy siły Okna do Quit jest wyświetlany ekran, czytałem gdzieś, jeśli wrócisz 0 do WM_QUERYENDSESSION nie wyświetlać tego, ale wciąż jest to wyświetlanie ...
Jakieś pomysły?
EDIT:
Użyliśmy kod, który ktoś odpowiedział, ale wciąż otrzymuję ten ekran.
powstrzymuje system przed zamknięciem dobry pomysł na pierwszym miejscu? –
Ale budujemy program, że jeśli użytkownik zostawił podłączony przez USB, nie może zamknąć się ani wylogować, dopóki go nie usunie. – x06265616e