C#:隔离点击任务栏上的图标时的“最小化或者恢复”的效果

  通常点击任务栏上的图标时,对应窗体实现“最小化或者恢复”的效果。但是在做最小化到托盘时,不希望点击任务栏图标时最小化到托盘,即希望拦截了这些效果(不允许:通过点击任务栏上的图标,实现“最小化或者恢复”的效果);

具体实现代码如下:

        #region 区别 任务栏中点击窗体图标(最小化|恢复)与点击最小化按钮

        private int WM_SYSCOMMAND = 0x112;
        private long SC_MINIMIZE = 0xF020;
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == WM_SYSCOMMAND)
            {
                if (m.WParam.ToInt64() == SC_MINIMIZE && m.LParam.ToString() != "0")    //m.LParam.ToString() != "0" 表示任务栏中点击窗体图标(最小化|恢复)
                {
                    HideMainForm(); //这里直接将窗体图盘化//this.isMinBoxHited = true;    //点击的是最小化按钮 通过中间变量不可行
                    return;
                }
            }
            base.WndProc(ref m);
        }

        #endregion

如果想实现其他效果可以参考如下:

    private int WM_SYSCOMMAND = 0x112;
    private long SC_MAXIMIZE = 0xF030;
    private long SC_MINIMIZE = 0xF020;
    private long SC_CLOSE = 0xF060;
    protected override void WndProc(ref Message m)
    {
        if (m.Msg == WM_SYSCOMMAND)
        {
            if (m.WParam.ToInt64() == SC_MAXIMIZE)
            {
                //MessageBox.Show("MAXIMIZE ");
                return;
            }
            if (m.WParam.ToInt64() == SC_MINIMIZE)
            {
                //MessageBox.Show("MINIMIZE ");
                return;
            }
            if (m.WParam.ToInt64() == SC_CLOSE)
            {
                //MessageBox.Show("CLOSE ");
                return;
            }
        }
        base.WndProc(ref m);
    }  

时间: 2024-07-28 14:51:04

C#:隔离点击任务栏上的图标时的“最小化或者恢复”的效果的相关文章

Chrome浏览器点击 input file上传按钮时延迟3-5秒的解决方法

1.  Google chrome 浏览器在52版本之后出现一个bug,就是点击 input file上传按钮时反应很慢,需要等待3-5秒种之后才能弹出选择文件的对话框.比如 windows里可能是这样: MAC里可能是这样:

winform中设置FormBorderStyle为None后点击任务栏自动最小化实现

在winform编程中,有时候我们可能对窗体样式需要定义,不适用系统自带的样式,这样我们可以设置FormBorderStyle属性为None.但是设置了FormBorderStyle为None后,我们点击任务栏应用程序图标并不能实现程序的最小化的操作(使用系统自带样式是可以实现的).下面我将展示如何在FormBorderStyle为None的情况下,实现应用程序任务栏图标点击可实现最小化. 1.添加如下代码 [DllImport("user32.dll", EntryPoint = &

转 点击关闭时最小化到任务栏

来源:http://www.2cto.com/kf/201401/274489.html 现在很多软件如360杀毒软件.酷狗音乐都拥有最小化至任务栏并在系统托盘区留下图标,我的项目同样需要该功能.所以本文主要叙述如何使用C#让窗体最小化至任务栏,同时在系统托盘区的图标点击左键能显示窗体,右键能关联控件显示3个常用功能.主要涉及到的控件是NotifyIcon和ContextMenuStrip,此类文章较多,希望作者以自己的独特视角给予大家帮助. 一.界面操作 1.创建"Windows窗体应用程序&

Delphi如何让程序最小化到任务栏(截取WM_SYSCOMMAND后,调用Shell_NotifyIcon)

现在很多的应用程序都有这样一种功能,当用户选择最小化窗口时,窗口不是象平常那样最小化到任务栏上,而是“最小化”成一个任务栏图标.象FoxMail 3.0 NetVampire 3.0等都提供了这样的功能.实现这样的功能实际上并不复杂,在窗口最小化时,窗口会发出WM_SYSCOMMAND消息,你只要需要截取Windows的WM_SYSCOMMAND消息,在窗口最小化时隐藏窗口并调用WindowsAPI函数Shell_NotifyIcon将定义的图标添加到任务栏上,Shell_NotifyIcon的

delphi程序最小化任务栏控件 托盘

unit MyTray; interface uses   Windows,Messages,SysUtils,Classes,Graphics,Controls, Forms,Dialogs,ShellApi,ExtCtrls,StdCtrls; const //自定义托盘消息   WM_TrayMsg=WM_USER+10; type //恢复窗口的方式,左双击,右双击,左单击,右双击   TRMode=(LDbClick,RDbClick,LCLick,RClick);   TMyTray

将VMware工作站最小化到托盘栏

目录 前言 将VMware最小化到托盘栏的方法 1.下载 Trayconizer 2.解压 trayconizerw.zip 3.创建 VMware 快捷方式 4.修改 VMware 快捷方式 5.运行 前言 因为一直要用到虚拟机,每次最小化的时候,总是占用任务栏,很不爽,于是在网上搜索了一番,终于找到一个可以用的方法. 将VMware最小化到托盘栏的方法 首先下载一个软件,叫做Trayconizer,最好把这个文件放在固定的目录下,比如我放在了D盘下的ProgramFiles目录下. 1.下载

Atitit.ALT+TAB没反应车and 点击任务栏程序闪烁可是不能切换

Atitit.ALT+TAB没反应车and 点击任务栏程序闪烁可是不能切换 1. 可能你的Alt+Tab键被别人禁用了,试下以下的方法: 1 2. 为什么要禁用Alt+Tab 1 3. ALT+TAB的历史作用 2 4. 解决方式::AltTabTuner1.0.1绿色版(系统设置软件 2 5. 參考 3 1. 可能你的Alt+Tab键被别人禁用了,试下以下的方法: 開始-执行-输入regedit,找到HKEY_CURRENT_USER\Control Panel\Desktop,在右边窗体,双

Atitit.ALT+TAB没反应车and 点击任务栏程序闪烁但是不能切换

Atitit.ALT+TAB没反应车and 点击任务栏程序闪烁但是不能切换 1. 可能你的Alt+Tab键被别人禁用了,试下下面的方法: 1 2. 为什么要禁用Alt+Tab 1 3. ALT+TAB的历史作用 2 4. 解决方案::AltTabTuner1.0.1绿色版(系统设置软件 2 5. 参考 3 1. 可能你的Alt+Tab键被别人禁用了,试下下面的方法: 开始-运行-输入regedit,找到HKEY_CURRENT_USER\Control Panel\Desktop,在右边窗口,双

网站点击导航栏标题,对应的元素平滑上移以及点击图片或按钮回到页面顶部的特效

之前看w3cshool上面,看到了a,name配合可以设置锚点,很多看书的网站上都用到,可以根据点击对应的目录章节,自动跳到具体的文字内容. 不过用锚点做的特效感觉很粗糙,不够平滑,总是一下子就跳到下面去了,没有给浏览者一种平滑的感觉.所以自己就计划着能不能做一种类似的比较平滑的效果呢? 当然是可以的.这篇博客中的特效要用到如下的函数和属性,大家没见过或者见过用过已经忘了的,可以到w3cshool上恶补下: eq(index):相当于数组吧,可以根据index索引到具体的对象 scrollTo(