ปิดใช้งานการยกเลิกแอปพลิเคชันโดยอัตโนมัติเมื่อปิดเครื่อง


8

มีทางเลือกใด ๆ ของ Windows XP สำหรับกระบวนการปิดระบบของ Windows Vista ซึ่งแจ้งให้ผู้ใช้ทราบว่าจะดำเนินการต่อหรือยกเลิกการปิดระบบในกรณีที่บางโปรแกรมมีข้อมูลที่ไม่ได้บันทึกหรือไม่?

คำตอบ:


10

คุณสามารถทำได้ด้วยรหัสบางอย่างโดยการส่งเหตุการณ์SystemEvents.SessionEnding นี่จะแสดงกล่องโต้ตอบเมื่อคุณพยายามออกจากระบบหรือปิดเครื่องและถามว่าคุณต้องการยกเลิกการออกจากระบบหรือปิดเครื่อง

รหัสสามารถรวบรวมฟรีกับทั้งVisual C # 2008 Express Edition ที่หรือมีหน้าต่าง SDK

ด้วย sdk ให้ใช้คำสั่งต่อไปนี้:

csc.exe   /out:StopShutdown.exe /target:winexe StopShutdown.cs 

นี่คือรหัส:

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);
        }

    }
}

แก้ไข:

แหล่งดาวน์โหลดและ exe


คุณจะเป็นคนดีและอัปโหลด "StopShutdown.exe" ที่อื่นหรือส่งอีเมลถึงฉันได้ไหม (ฉันจะเข้าใจถ้าคุณกล่าวว่าไม่มี)
Lawand


ทำงานได้ดีคุณเข้าใกล้จริงๆ: ฉันเปิดไฟล์ที่ไม่ได้บันทึกไว้แล้วฉันเรียกใช้การปิดเครื่องจากเมนูเริ่มถัดจากพรอมต์ถามฉันว่าฉันต้องการยกเลิกการปิดเครื่องหรือไม่ แต่เมื่อฉันรอสองสามวินาที Windows จะยกเลิกโปรแกรมของคุณ กระบวนการปิด ...
Lawand

ใช่ถ้าคุณต้องการให้ XP รออีกต่อไปคุณจะต้องแก้ไขค่ารีจิสตรีที่กล่าวถึงในโพสต์อื่น ฉันจะปรับปรุงรหัส ...
สกอตต์เวนสไตน์

ที่จริงฉันต้องการให้ XP หยุดกระบวนการปิดอย่างถาวร (เช่นเดียวกับ Vista) อย่างไรก็ตามคำตอบของคุณที่อยู่ใกล้ที่สุดเพื่อให้ห่างไกล ...
Lawand

2

หากคุณยินดีทำการแก้ไขรีจิสทรีเล็กน้อย ... เริ่ม -> เรียกใช้ -> regedit

แผงควบคุม \ Desktop \ HKEY_CURRENT_USER \

ตรวจสอบให้แน่ใจว่า AutoEndTasks เป็น 0 และตั้งค่า WaitToKillAppTimeout เป็น 20000 (ค่าเริ่มต้นคือ 2 วินาที) คุณสามารถตั้งค่าที่สูงขึ้นหากคุณต้องการ นอกจากนี้ยังมี HungAppTimeout (ค่า defalt คือ 5,000) แต่จะใช้กับแอปพลิเคชันที่ไม่ตอบสนองมากขึ้น


สิ่งนี้ให้เวลามากขึ้นสำหรับแอปที่จะปิดอย่างถูกต้อง แต่มันไม่ได้หยุดกระบวนการปิดอย่างถาวร ...
Lawand

0

เมื่อใดก็ตามที่ฉันปิดการทำงานของ XP หากโปรแกรมไม่ว่างโปรแกรมจะให้แถบความคืบหน้าและตัวเลือก 'สิ้นสุดตอนนี้' หรือ 'ยกเลิก'

การคลิก 'ยกเลิก' จะหยุดกระบวนการปิดระบบ อย่างไรก็ตามสิ่งที่มันได้ปิดไปแล้วไม่ได้กลับมา

แต่ให้เวลาฉันในการบันทึกสิ่งที่ฉันกำลังทำอยู่ก่อนที่จะลองปิดระบบอีกครั้ง


แต่ถ้าโปรแกรมกำลังตอบสนอง (ไม่ยุ่ง) มันจะถูกบังคับให้ปิดแม้ว่ามันจะมีข้อมูลที่ไม่ได้บันทึกไว้ก็ตาม
Lawand

นั่นไม่ใช่สิ่งที่คุณถาม - ถ้ามันไม่ตอบสนองก็ไม่ได้ว่าถ้าคุณกำลังพยายามที่จะปิดหรือไม่คุณจะสูญเสียไม่ได้บันทึกข้อมูล
วอร์เรน

ขอโทษนะฉันไม่ควรได้กล่าวว่า "โปรแกรมไม่ว่าง" ผมหมายถึงโปรแกรมที่มีข้อมูลที่ไม่ได้บันทึกและบอกว่าจะไม่ยุ่ง ...
Lawand

1
โอ้แล้วคำตอบของฉันก็ยังคงอยู่ - อย่างน้อยในการติดตั้งธรรมดาวานิลลาของ XP: เมื่อใดก็ตามที่ฉันได้ปิดเครื่อง แต่มีตัวอย่างเช่นเอกสารที่ไม่ได้บันทึกใน Word ฉันมีโอกาสยกเลิกการปิดระบบบันทึกเอกสารของฉัน (s) แล้วเริ่มกระบวนการปิดระบบใหม่อีกครั้ง
warren

สองสามวันที่ผ่านมาผมติดตั้ง XP SP3 และตอนนี้ระบบไม่สิ่งที่คุณพูดว่าในขณะที่มีการติดตั้ง SP2 มันไม่ได้ ...
Lawand
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.