Tạo một ứng dụng đơn giản, vì vậy khi người dùng đăng xuất khỏi Windows, tất nhiên sẽ tắt ứng dụng. Chúng tôi đang thực hiện một ứng dụng USB Alert đơn giản mà STOPS tắt nếu phát hiện thấy USB khi người dùng đang đăng xuấtWM_QUERYENDSESSION đang gây ra sự cố cho tôi
Đây là mã cho đến thời điểm này.
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;
}
}
}
gì đang xảy ra là các chương trình Force Quit Windows để màn hình đang được hiển thị, tôi đọc ở đâu đó nếu bạn quay lại từ 0 đến WM_QUERYENDSESSION nó không hiển thị này, nhưng nó vẫn được hiển thị này ...
Bất kỳ ý tưởng nào?
EDIT:
Chúng tôi đã sử dụng mã mà ai đó đã trả lời nhưng chúng tôi vẫn nhận được màn hình này.
Việc ngăn hệ thống tắt ý tưởng tốt ngay từ đầu? –
Nhưng chúng tôi đang xây dựng một chương trình, rằng nếu một Người dùng đã để lại một USB cắm nó, họ không thể tắt hoặc đăng xuất cho đến khi họ gỡ bỏ nó. – x06265616e