win7关机确认,如何让win7实现关机时弹出确认关机的对话框

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了win7关机确认,如何让win7实现关机时弹出确认关机的对话框相关的知识,希望对你有一定的参考价值。

如何让win7在开始菜单点击关机的时候弹出确认关机的对话框,因为经常要在开始菜单运行cmd,有的时候一不小心碰到关机那结果电脑就关了,非常碍事,求神人帮忙,谢谢!
另外,不要告诉我在桌面使用alt+f4组合键关机的方式,我不习惯

  可利用关机脚本实现,方法如下:

  1、新建文本文件,输入以下内容:msgbox"下班了,别忘了打卡",64,"下班",  另存为gj.vbs,本例保存到C盘下;

  2、按win+r快捷键,输入gpedit.msc,点击确定;

  3、依次点击展开用户配置--windows设置--脚本,双击右侧注销项;

  3、点击添加;

  4、脚本名输入c:\\gj.vbs,点击确定;

  5、点击确定关闭对话框即可。

  

参考技术A 右击鼠标,桌面属性,进入屏幕保护中“电源”,选择高级选项,按下关机电源开关时,
大体是这个,你自己试一下,我也记的不是多清楚了。希望可以帮助到你。追问

哥你说的是XP把,我的系统是win7,win7桌面右键哪来的属性选项!

参考技术B 右击鼠标,桌面属性,进入屏幕保护中“电源”,选择高级选项,按下关机电源开关时,
大体是这个
参考技术C 开始菜单——控制面板——系统和安全——电源选项——编辑计划设置——高级设置追问

详细点行吗

追答

额。我看错了。win 7没有这种的。
除非是有程序没关。所以才会提示。不然是直接关机的。
没有像XP那种有确认选择的。

c# 如何截获windows关机或注销消息

要求关机或注销时弹出一个确认框提示我是否继续,
选择是继续关机,选择否取消关机回到windows.
可是为什么这种方法在我的电脑上不行啊,关机和注销的时候还是和平常一样,我的系统是winxpsp2.
是不是系统设置的问题啊?还有其他方法吗?

Form里有WndProc方法,对它进行重写,可以捕获系统消息。下面的代码放进你程序里试试。
//截取消息,进行处理
protected override void WndProc(ref Message m)

switch(m.Msg)

case 17:
MessageBox.Show("哈哈,你不能关闭计算机!");
m.Result=(IntPtr)0;
break;
case 513:
MessageBox.Show("哈哈,你不能点击左键!");
m.Result=(IntPtr)0;
break;
case 516:
MessageBox.Show("哈哈,你不能点击右键!");
m.Result=(IntPtr)0;
break;
default:
base.WndProc(ref m);
break;


以上方法是截获系统关机时发送给各个进程的关机消息,如果这种方法没用的话,可以用windows系统钩子来进行消息获取,一旦设置了系统钩子,它将先于任何消息捕捉机制而第一个捕捉到消息,用到系统钩子必须从系统DLL导入以下方法。
//装置钩子的函数
[DllImport("user32.dll ", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
//卸下钩子的函数
[DllImport("user32.dll ", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern bool UnhookWindowsHookEx(int idHook);

//下一个钩挂的函数
[DllImport("user32.dll ", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam);
具体的用法,可以去网上搜索,网上有很多的。英文叫windows hook。
参考技术A protected override void OnFormClosing(FormClosingEventArgs e)

switch (e.CloseReason)

case CloseReason.ApplicationExitCall:
e.Cancel = true;
MessageBox.Show("拦截关闭要求事件!");
break;
case CloseReason.FormOwnerClosing:
e.Cancel = true;
MessageBox.Show("拦截自身关闭事件!");
break;
case CloseReason.MdiFormClosing:
e.Cancel = true;
MessageBox.Show("拦截MDI窗体关闭事件!");
break;
case CloseReason.None:
break;
case CloseReason.TaskManagerClosing:
e.Cancel = true;
MessageBox.Show("拦截任务管理器关闭事件!");
break;
case CloseReason.UserClosing:
e.Cancel = true;
MessageBox.Show("拦截用户关闭事件!");
break;
case CloseReason.WindowsShutDown:
e.Cancel = true;
MessageBox.Show("拦截关机事件!");
break;
default:
break;


base.OnFormClosing(e);


但是值得一提的时候,关闭和注销的时候有时候会弹出来程序没响应的提示,这时候如果用立刻结束,还是会被关掉的。本回答被提问者采纳
参考技术B 楼上的朋友,楼主的意思是拦截windows的关机消息,不是关机以后发送给各进程的关机消息。

我猜用C#应该是实现不了的,看用远程注射能不能搞定了。可能通过替换掉内存中的关机的那段代码可以搞定。不过我也没什么经验,希望大家不要笑我。

以上是关于win7关机确认,如何让win7实现关机时弹出确认关机的对话框的主要内容,如果未能解决你的问题,请参考以下文章

Win7关机时弹出对话框,提示你想要的信息

如何去掉windows2003的关机确认?

电脑关机时显示应用程序错误

好系统U盘启动分享win7电脑无法关机解决方法

如何用python做一个在windows关机时弹出一句消息提示的小程序?

Win7如何设置每天自动关机?