西西软件下载最安全的下载网站、值得信赖的软件下载站!

首页编程开发其它知识 → winform程序最小化到托盘后不能正常关机的解决方案

winform程序最小化到托盘后不能正常关机的解决方案

相关软件相关文章发表评论 来源:西西整理时间:2012/12/12 11:53:57字体大小:A-A+

作者:西西点击:0次评论:0次标签: 关机

07073定时关机1.0.0.1 绿色版
  • 类型:定时工具大小:5.3M语言:中文 评分:5.0
  • 标签:
立即下载

问题描述:

在最近的windows程序中,由于实现了winform程序点击窗口的关闭按钮,不直接退出程序,而是将程序最小化到托盘中,这样当程序没有退出之前,直接关机会导致关机不能正常进行。

问题原因:

操作系统会在用户点击关机后,发送一个关闭的消息到当前运行的应用程序,这个消息的ID号问0x11,这样当应用程序接受到消息后就会关闭自身,然后操作系统就可正常关闭了。但是我们在实现了上面的功能后,会在FormClosing事件中添加一段代码,

e.Cancel = true;
//最小化到托盘
NormalToMinimized();

  这样我们虽然实现了功能,但是在接受到操作系统发送来的关闭窗口的消息的时候,就不能关闭程序了。

解决方案:

1.在应用程序的主窗口添加一个私有的标识,用来标识,关闭窗口的事件是由用户点击引起的还是由操作系统发送的小心引起的。

 2.在应用程序主窗口中添加对系统消息的处理,这个处理的过程需要重写窗口的窗口过程,也就是窗口处理操作系统消息的方法。

protected override void WndProc(ref Message m)
        {
            if (m.Msg == 0x11)
            {
             //自定义的事件触发标识,为true时表示窗口的关闭事件是由操作系统的关机操作引起的。
             isExitAppFalg = true;


            }
            base.WndProc(ref m);
        }

3.修改FormClosing事件的处理过程,添加一个判断就可以了

         if (!isExitAppFalg)
            {
                e.Cancel = true;
                //最小化到托盘
                NormalToMinimized();
            }

这样就把实现功能所带了的副作用给解决了。

    定时关机
    (13)定时关机
    像小编一样,每天大部分时间都在电脑面前度过,一款好用的定时关机软件是必备的,既可以避免忘记关机又方便管理你的电脑,今天小编就推荐一些好用易用的定时关机软件给大家定时关机软件大全小编整理了一些非常好用的定时关机软件在这里做了一个合集分享给大家,完全绿色免费,亲测完美使用。定时关机小助手这指的是一类功能比较强大的定时关机软件,如酷开定时关机小助手等,他们不仅仅可以帮你关机,还可以帮你管理日常的一些生活...更多>>

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)
    推荐文章

    没有数据