Có bất kỳ Windows XP nào thay thế cho quá trình tắt máy của Windows Vista nhắc người dùng có nên tiếp tục hoặc hủy tắt máy trong trường hợp một số chương trình có chứa dữ liệu chưa được lưu không?
Có bất kỳ Windows XP nào thay thế cho quá trình tắt máy của Windows Vista nhắc người dùng có nên tiếp tục hoặc hủy tắt máy trong trường hợp một số chương trình có chứa dữ liệu chưa được lưu không?
Câu trả lời:
Bạn có thể làm điều này với một số mã bằng cách trao sự kiện SystemEvents.SessionEinating . Điều này sẽ hiển thị một hộp thoại khi bạn cố gắng đăng xuất hoặc tắt máy và hỏi xem bạn có muốn hủy đăng xuất hoặc tắt máy không.
Mã này có thể được biên dịch miễn phí với Visual C # 2008 Express Edition hoặc với SDK Windows .
Với sdk, sử dụng lệnh sau:
csc.exe /out:StopShutdown.exe /target:winexe StopShutdown.cs
Đây là mã:
using System;
using System.Windows.Forms;
using Microsoft.Win32;
namespace StopShutdown
{
static class Program
{
[STAThread]
static void Main()
{
string desktopRegKey = @"HKEY_CURRENT_USER\Control Panel\Desktop";
Registry.SetValue(desktopRegKey, "AutoEndTasks", 0);
Registry.SetValue(desktopRegKey, "WaitToKillAppTimeout", 20000);
Registry.SetValue(desktopRegKey, "HungAppTimeout", 20000);
Form AppForm = new Form()
{
ClientSize = new System.Drawing.Size(0, 0),
ControlBox = false,
FormBorderStyle = FormBorderStyle.None,
Opacity = 0,
ShowIcon = false,
ShowInTaskbar = false,
SizeGripStyle = SizeGripStyle.Hide,
};
SystemEvents.SessionEnding += (_e, e) =>
{
DialogResult dr = MessageBox.Show(
"Cancel shutdown?"
, "Shutdown",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question,
MessageBoxDefaultButton.Button1);
e.Cancel = (dr == DialogResult.Yes);
};
Application.Run(AppForm);
}
}
}
Biên tập:
Nếu bạn sẵn sàng thực hiện một chút chỉnh sửa sổ đăng ký ... Bắt đầu -> Chạy -> regedit
HKEY_CURRENT_USER \ Bảng điều khiển \ Máy tính để bàn
Đảm bảo AutoEndT task là 0 và đặt WaitToKillAppTimeout thành 20000 (giá trị mặc định là 2 giây). Bạn có thể đặt giá trị cao hơn nếu bạn muốn. Ngoài ra còn có HungAppTimeout (mức hoãn là 5000), nhưng áp dụng nhiều hơn cho các ứng dụng không đáp ứng.
Bất cứ khi nào tôi thực hiện tắt máy trên XP, nếu chương trình bận rộn, nó sẽ cung cấp cho tôi thanh tiến trình và tùy chọn 'Kết thúc ngay bây giờ' hoặc 'Hủy'.
Nhấp vào 'Hủy' sẽ dừng quá trình tắt máy. Tuy nhiên, bất cứ điều gì nó đã tắt máy không quay trở lại.
Nhưng nó cho tôi thời gian để lưu lại những gì tôi đang làm trước khi thử lại việc tắt máy.