精华内容
下载资源
问答
  • 由于需求,我需要获取Windows底部任务栏 自动隐藏任务栏或者取消自动隐藏任务栏时的消息。 在当时我就在想想要在自己程序中获取系统的消息那肯定很麻烦,于是我就上网查了一遍不过这方面的介绍也似乎不是很多。...

        由于需求,我需要获取Windows底部任务栏 自动隐藏任务栏或者取消自动隐藏任务栏时的消息。 可在当时我就在想想要在自己程序中获取系统的消息那肯定很麻烦,于是我就上网查了一遍不过这方面的介绍也似乎不是很多。不过也有类似的比如用全局钩子、用API拦截技术等,但也只是类似并不是我想要的。 偶然间看到一篇文章用到SHAppBarMessage()可以真正实现任务栏连带着开始菜单一起隐藏 我就觉得我可以通过API拦截把系统的消息拦截下来。

    一、 自动隐藏任务栏和取消自动隐藏任务栏(隐藏于自动隐藏不同)

    需要利用一API函数:SHAppBarMessage
    UINT_PTR SHAppBarMessage(      
        DWORD dwMessage,
        PAPPBARDATA pData
    );
    
    参数说明:
    dwMessage   可以为下列参数
    ABM_ACTIVATE                    激活一个 appbar 
    ABM_GETAUTOHIDEBAR              检索屏幕边缘的 appbar
    ABM_GETSTATE                    检索最顶层的Microsoft Windows任务栏
    ABM_GETTASKBARPOS               检索任务栏
    ABM_NEW                         注册一个新的appbar,该系统并发送一消息给appbar 
    ABM_QUERYPOS                    appbar 大小和屏幕位置 
    ABM_REMOVE                      取消注册一个 appbar,并从系统内部列表移出
    ABM_SETAUTOHIDEBAR              在屏幕边缘注册或取消注册appbar
    ABM_SETPOS                      设置appbar 的大小和屏
    展开全文
  • Windows 10下任务栏上直接输入能搜索解决方法如果出现Windows 10下任务栏上直接输入能搜索,只需要在任务栏右键,选择任务管理器,把 所有的Cortana进程删除就解决。

    Windows 10下任务栏上直接输入不能搜索解决方法

    如果出现Windows 10下任务栏上直接输入不能搜索,只需要在任务栏右键,选择任务管理器,把 所有的Cortana进程删除就可解决。

    展开全文
  • 本次是有关于Windows7任务栏开发中缩略图、工具栏按钮的添加两个功能的实现,以充分利用Windows 7所提供的任务栏新特性,极大的方便用户在任务栏进行快捷的操作。

    C#Windows7任务栏开发Thumbnail Toolbars(缩略图、工具栏按钮)

    依旧是在扩展WMP播放器功能时所遇到的问题,我想要实现Windows7所带来的任务栏特性,直接看图。

    以网易云音乐为例,①能够在任务栏的略缩图显示专辑封面(或则其他想要的略缩图)②能够有快捷按钮。当然这只是我暂时想要实现的功能,比如还有在任务栏显示进度条状态,本文不涉及,如果感兴趣这里倒是有个不错的Demo可供参考学习https://my.oschina.net/Tsybius2014/blog/716122

    下面我就直接开始,我还是用之前写的WMP播放器做为演示,为了更直观和简洁,不实现按钮的功能细节部分

    一、必要库文件的引入

    需要引入3个库文件:Microsoft.WindowsAPICodePackMicrosoft.WindowsAPICodePack.Shell、PresentationCore

    以及命名空间:using Microsoft.WindowsAPICodePack.Taskbar;

    前两个库文件需要下载:http://download.csdn.net/download/wanghanltd/2176242

    添加完成后:


    二、创建任务栏按钮以及单击事件

    首先是要添加窗口的Form_Shown事件,在该事件中进行创建按钮。
    private void Form1_Shown(object sender, EventArgs e)
    {
        //播放按钮
        ThumbnailToolbarButton btnPlayPause = new ThumbnailToolbarButton(Properties.Resources.Play, "Play");
        btnPlayPause.Enabled = true;
        btnPlayPause.Click += new EventHandler
        
         (btnPlayPause_Click);
    
        //下一首按钮
        ThumbnailToolbarButton btnNext = new ThumbnailToolbarButton(Properties.Resources.Next, "Next");
        btnNext.Enabled = true;
        btnNext.Click += new EventHandler
         
          (btnNext_Click);
    
        //上一首按钮
        ThumbnailToolbarButton btnPre = new ThumbnailToolbarButton(Properties.Resources.Pre, "Previous");
        btnNext.Enabled = true;
        btnPre.Click += new EventHandler
          
           (btnPre_Click);
    
        //添加按钮
        TaskbarManager.Instance.ThumbnailToolbars.AddButtons(this.Handle, btnPre, btnPlayPause, btnNext);
        
        //裁剪略缩图,后面提到
        TaskbarManager.Instance.TabbedThumbnail.SetThumbnailClip(this.Handle, new Rectangle(AxWmp.Location, AxWmp.Size));
    }
    
    //这里只做效果演示,不实现功能
    void btnPlayPause_Click(object sender, EventArgs e)
    {
        MessageBox.Show("播放");
    }
    
    void btnPre_Click(object sender, EventArgs e)
    {
        MessageBox.Show("上一首");
    }
    
    void btnNext_Click(object sender, EventArgs e)
    {
        MessageBox.Show("下一首");
    }
          
         
        
    至于为什么要放在Form_Shown事件中,这点我还太清楚,或许是和窗口的绘制顺序有些关系吧。绑定按钮的单击事件时要是用<ThumbnailButtonClickedEventArgs>进行强制转型。最后将三个按钮完成添加。

    看看效果:

    点击按钮后的效果:

    三、裁剪想要的略缩图

    不对略缩图进行裁剪,默认将得到整个窗口的略缩图,就会显得不美观也看不出展示效果如下图:
    所以在有需要的情况下,我们需要对略缩图进行裁剪,裁剪的方法比较简单使用一个函数方法就能实现。
    private void SetTaskbarthumbnail()
    {
        //设定裁剪区域坐标为AxWmp控件的X、Y、宽、高
        TaskbarManager.Instance.TabbedThumbnail.SetThumbnailClip(this.Handle, new Rectangle(AxWmp.Location.X, AxWmp.Location.Y, AxWmp.Size.Width, AxWmp.Size.Height));
    }
    可以在Form_Show或则窗口更新时,重新设置缩略图的显示位置。
    现在就完成了我们所需要的效果,当然你也可以自己把略缩图的位置设置到专辑封面的PictureBox,或则其他……

    实现起来还是非常简单的,还有jumpList与任务栏状态提示等Window7特性功能也很值得学习和使用,希望本篇博客能够帮助到你。






    展开全文
  • 现在的问题似乎解决了,但是不要忘记,这个函数需要一个参数,也就是被删除任务栏锁定的执行文件的位置。这儿可能很多人都说,直接获取当前路径就完了吗?有现成的API。但问题是,如果要你删除的不是你自己的...

    这几天改bug,遇到一个删除任务栏快捷图标的问题。本来想着应该挺简单的,估计是在注册表或者C盘的某个位置放置着一个链接,一删除就可以搞定。没想到没那么简单。

    C:\Users\LeoLi\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar这个目录下放的就是任务栏中的快捷方式。我之前以为只要把这个地方的lnk删除了,就相当于去掉了任务栏快捷图标,但是结果还是存在,只是你点击的时候系统提示该链接已失效。看来这个方法是行不通的。

    网上去搜资料,发现有篇介绍任务栏列表的文章:http://www.codeproject.com/Articles/36561/Windows-Goodies-in-C-Jump-Lists。这篇文章不是介绍如何删除任务栏锁定,而且介绍了为什么我们在任务栏的图标上右键的时候,会看到很多额外的信息,都是程序自己加上去的。所以可以适当的了解下。然后其实了解了这块内容,删除任务栏锁定就不是什么难题了。代码如下:

    bool UnLockWinTaskBarLink( const String runPath )
    {
        HINSTANCE hModule = ::LoadLibrary(_T("Shell32.dll")) ;
        if (hModule == NULL)
        {
            return false ;
        }
        typedef HRESULT (__stdcall* SHCreateItemFromParsingName)(PCWSTR pszPath, IBindCtx *pbc, REFIID riid, void **ppv) ;
        SHCreateItemFromParsingName mySHCreateItemFromParsingName = (SHCreateItemFromParsingName)GetProcAddress(hModule, "SHCreateItemFr        omParsingName") ;
        if (mySHCreateItemFromParsingName == NULL)
        {
            return false ;
        }
        bool result = true ;
        do
        {
            CComPtr<IShellItem> spItem ;
            HRESULT hr = mySHCreateItemFromParsingName(
            runPath.c_str(), NULL, IID_PPV_ARGS(&spItem)) ;
            if (FAILED(hr))
            {
                result = false ;
                break ;
            }
            CComPtr<IStartMenuPinnedList> spStartMenuPinnedList ;
            hr = CoCreateInstance(CLSID_StartMenuPin, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&spStartMenuPinnedList)) ;
            if (FAILED(hr))
            {
                result = false ;
                break ;
            }
            hr = spStartMenuPinnedList->RemoveFromList(spItem) ;
            if (FAILED(hr))
            {
                result = false ;
            }
        } while (false) ;
        FreeLibrary(hModule) ;
        return result;
    }
    代码的逻辑应该是不用多说,就是利用 Shell32.dll的导出函数 SHCreateItemFromParsingName,系统对每个任务栏锁定都相应的记录,通过这个程序的可执行文件的位置,我们可以得到一个操作这个程序的“标识”,便于去删除。

    其实我多次看到Shell.dll的调用,这是一个很有用的dll,提供了很多操作系统的方法,我网上找了下这方面的总结,比较少,等以后用的多的再继续更新。

    现在的问题似乎解决了,但是不要忘记,这个函数需要一个参数,也就是被删除任务栏锁定的可执行文件的位置。这儿可能很多人都说,直接获取当前路径不就完了吗?有现成的API。但问题是,如果要你删除的不是你自己的程序呢,随便给一个程序,让你解除任务栏绑定,你怎么去找到这个程序的exe的位置呢?

    我之前的思路是系统肯定知道所有exe的位置,那注册表里有记录,可以直接找了半天没什么收获(其实确实有的,稍后说)。那最直接的办法就是全盘搜索,耗时巨大。一般来说程序的安装目录不会有太多层,我们遍历个7,8层应该都是可以检索出来的。而且还可以优先遍历某几个很有可能的文件夹,这样的设计显然不好。于是就想了个歪点子,我们能找到快捷链接的位置,右击快捷方式不是可以看到目标位置吗?那有没有办法获取到快捷方式的信息呢?答案是:有的。代码如下:

    BOOL GetIEQuickLaunchPath(TCHAR *pszIEQueickLaunchPath)
    {
        LPITEMIDLIST ppidl;
        if (SHGetSpecialFolderLocation(NULL, CSIDL_APPDATA, &ppidl) == S_OK)
        {
            BOOL flag = SHGetPathFromIDList(ppidl, pszIEQueickLaunchPath);
            ::wcscat_s(pszIEQueickLaunchPath, MAX_PATH, _T("\\Microsoft\\Internet Explorer\\Quick Launch"));
            CoTaskMemFree(ppidl);
            return flag;
        }
        return FALSE;
    }
    
    bool SearchExePathByLnk(String StrTargetFile, WCHAR* szDesEXEPath)
    {
        ::CoInitialize(NULL); //初始化COM接口  
        IShellLink *psl = NULL;
    
        HRESULT hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID *)&psl);
        if (SUCCEEDED(hr))
        {
            IPersistFile *ppf;
            hr = psl->QueryInterface(IID_IPersistFile, (LPVOID*)&ppf);
            if (SUCCEEDED(hr))
            {
                hr = ppf->Load(StrTargetFile.c_str(), STGM_READ);    //加载文件  
                if (SUCCEEDED(hr))
                {
                    WIN32_FIND_DATA wfd;
                    psl->GetPath(szDesEXEPath, MAX_PATH, (WIN32_FIND_DATA*)&wfd, SLGP_SHORTPATH);  //获取目标路径  
                    return true;
                }
                ppf->Release();
            }
            psl->Release();  //释放对象  
        }
        ::CoUninitialize();   //释放COM接口  
    
        return false;
    }
    
    
        String StrTargetFile;
        PIDLIST_ABSOLUTE pid;
        TCHAR szDocument[MAX_PATH + 1] = { 0 };
        WCHAR szDesEXEPath[MAX_PATH] = L"";
    
        GetIEQuickLaunchPath(szDocument);
        StrTargetFile.append(szDocument);
        StrTargetFile.append(_T("\\User Pinned\\TaskBar\\"));
        StrTargetFile.append(_T("酷我音乐.lnk"));
       
        SearchExePathByLnk(StrTargetFile, szDesEXEPath);
        UnLockWinTaskBarLink(RCString(szDesEXEPath));
        DeleteFile(StrTargetFile.c_str());

    上面的代码中,通过lnk查找可执行文件的位置是参考的是另一位博友的博客: 点击打开链接 http://blog.csdn.net/yoie01/article/details/8688686 。只要任务栏有锁定,那么%AppData%Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar中就一定有这个快捷方式,那这样的话,问题就解决了。

    当然这不是什么好方法,后来我找到了注册表里关于信息的记录。在一个项名为Uninstall的下面,这个项有两个地方,不固定某一个,所以需要都检索一下,具体位置是:

    HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall  ;

    HKEY_LOCAL_MACHINE, _T("Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall  。

    找到这个地方,剩下的就是读取注册表了,这个应该就非常简单了吧?

    展开全文
  • VC 获取任务栏窗口的句柄

    千次阅读 2015-07-18 16:46:54
    本文将介绍一个未公开的Win32 API函数:GetTaskmanWindow,利用它对Windows任务栏进行操作。这个函数返回拥有任务栏按钮的窗口句柄。在微软的MSDN文档中,对任务栏是这样描述的:"……Windows界面包含一个特殊的...
  • 用 VC5 控制 Windows 任务栏图标

    千次阅读 2006-04-21 13:47:00
    用 VC5 控制 Windows 任务栏图标 通过在Windows任务栏中设置图标,我们可以有效控制系统和程序中最常用功能,使用户实时观察应用程序的工作状态。Windows 95、98中已经有设备状态、系统时钟、计划任务以及中文...
  • Delphi隐藏任务栏

    千次阅读 2007-06-05 09:12:00
    Delphi中如何控制Windows任务栏的显示 吴淑华为了更有效地利用显示器的空间,多数程序员都有过这样的经验,即通过Windows任务栏属性对话框,在“任务栏选项”页中将任务栏设置为“自动隐藏”,并且为了在需要
  • 现在,有外媒编辑就第一时间展示了Windows 10X的新细节,比如全新的开始菜单,之所以说它新,第一,任务栏图标默认是居中的,除了固定的应用程序,任务栏还可以显示最近启动的应用程序,类似于Android和iOS手机。...
  • Bins 实用任务栏增强工具 带注册码

    热门讨论 2013-07-11 09:31:43
    “Bins 是一款能加强 Windows 任务栏的非常实用的软件,能够给任务栏加上类似 Mac OSX 系统中的 Stack 网格功能,目的是给图标创建分组 (这里叫做Bin)并堆叠起来,让任务栏的空间利用率更高,让你启动常用程序时更加...
  • Windows任务管理器参数解释

    千次阅读 2019-06-05 18:04:55
    Windows任务管理器参数解释 一、概述及菜单  任务管理器提供正在您的计算上运行的程序和进程的相关信息。也显示最常用的度量进程性能的单位。 使用任务管理器可以监视计算机性能的关键指示器。可以查看正在...
  • windows10搜索框能搜索解决方法

    千次阅读 2019-05-30 11:04:15
    解决Windows10搜索框能搜索问题。 1、首先,打开管理员命令窗口,win+x,可以看到弹出一个窗口,打开windows Powershell(管理员) 2,输入下面这行英文 start powershell(个人备注:这个命令会打开...
  • Windows 7程序开发系列之一(任务栏篇)

    万次阅读 热门讨论 2010-05-25 20:56:00
    Windows 7 引入了很多新特性,其中最直观的莫过于用户界面上的变化。很多人也因为能适应这种变化而...于是把以前一个电源管理的小软件重写了一次(点此下载),利用Windows 7 的任务栏特性和JumpList。 关于Windows
  • IE9在Win7下任务栏新特性简介

    千次阅读 2012-09-17 15:36:04
    IE9在Win7下的任务栏绑定、Jumplist等功能体现了网站即应用的思想,通过增强的功能可以像传统软件一样方便的浏览、控制网站,获取消息通知,体现了以网站为中心,去浏览器中心化的发展思路。在下图里,常用的网站...
  • VB6中的任务栏图标编程

    千次阅读 2004-06-24 10:02:00
    VB6中的任务栏图标编程 杨山河 Windows 9X的桌面任务栏显示了当前正在运行的任务,并且右下角的任务栏图标提供了快速访问对于当前可见的任务。我们的鼠标单击或双击动作都通过任务栏转发给相应的窗口,哪怕该应用...
  • 微软在 Windows 10 上新增了一项功能 Windows 聚焦 (Windows Spotlight),它会自动随机下载并更换锁屏界面的壁纸 (Lockscreen),让你每次打开电脑都有一样的视觉享受。这些高清锁屏壁纸往往都很精美,很多视觉冲击...
  • 理论题 —— Windows 7基础知识

    千次阅读 2021-04-12 22:18:42
    2.关于Windows7的“任务栏”,以下描述正确的是________。 答案:D A.显示系统的所有功能 B.只显示当前活动程序窗口名 C.只显示正在后台工作的程序窗口名 D.便于实现程序窗口之间的切换 3.以下属于典型Windows
  • C#实现类似QQ的任务栏通知窗口

    千次阅读 2013-10-09 11:34:30
    QQ和MSN的任务栏通知窗口很人性化,它可以在丢失主窗体焦点的前提下显示一个具备皮肤Skin的通知窗体,当它显示一段时间后会自动消失,所以用户根本不用干预它。 这样的通知窗体和一般的具备标题栏、系统图标和...
  • windows注册表

    万次阅读 多人点赞 2019-03-27 08:26:47
    注册表是windows操作系统、硬件设备以及客户应用程序得以正常运行和保存设置的核心“数据库”,也可以说是一个非常巨大的树状分层结构的数据库系统。 注册表记录了用户安装在计算机上的软件和每个程序的相互关联...
  • windows客户端开发--windows api大全

    千次阅读 2016-03-20 00:34:17
    LockFile 锁定文件的某一部分,使其与其他应用程序共享 LockFileEx 与LockFile相似,只是它提供了更多的功能 lopen 以二进制模式打开指定的文件 lread 将文件中的数据读入内存缓冲区 lwrite 将数据从内存...
  • [原创]使窗口出现在任务栏

    千次阅读 2005-11-01 13:04:00
    利用系统函数Shell_NotifyIcon可以将一个图标显示在任务栏的通告区中。2、主界面的隐藏:在SDK下是通过修改入口函数WinMain中的API函数CreatWindow的参数来实现的,在MFC下已经对其进行了封装,使我们无法直接对...
  • 利用WINDOWS命名漏洞等建立的特殊文件或文件夹 参考了很多文章,搜集了很多资料整理而成。 好的用途可以用来隐藏个人资料,防止误删,病毒免疫等等。 至于坏的方面,当然也用来隐藏木马等等,就看你怎么用...
  • 用VB实现任务栏右下角的小图标

    千次阅读 2007-01-29 14:26:00
    将VB应用程序缩成系统状态图标二法 第一种方法:VB光盘的tools/unsupport/systray目录下有一个例子,将此目录复制到硬盘,编译生成一个OCX控件,在自己的程序中使用此控件,可以实现将程序图标放于右下角系统图标区,...
  • 从这篇文章开始,作者将带着大家来学习《Windows黑客编程技术详解》,其作者是甘迪文老师,推荐大家购买来学习。作者将采用实际编程和图文结合的方式进行分享,并且会进一步补充知识点,希望对您有所帮助。第二篇...
  • Windows类标识符及其妙用

    千次阅读 2018-11-21 23:26:17
    Windows类标识符 ...一个准备创建多个对象的类对象应将其CLSID注册到系统注册数据库的任务表中,以使客户能够定位并装载与该对象有关的执行代码。 回收站.{645ff040-5081-101b-9f08-00aa002f954e} 回收...
  • Windows消息传递机制详解

    万次阅读 多人点赞 2015-03-19 13:44:34
    Windows是一个消息(Message)驱动系统。Windows的消息提供了应用程序之间、应用程序与Windows系统之间进行通信的手段。应用程序想要实现的功能由消息来触发,并且靠对消息的响应和处理来完成。必须注意的是,消息...
  • Windows API函数大全(Windows编程参考手册)

    千次阅读 多人点赞 2020-12-10 15:50:58
    Windows API包括几千个调用的函数,它们大致可以分为以下几个大类:基本服务、组件服务、用户界面服务、图形多媒体服务、消息和协作、网络、Web服务。
  • Windows 10新功能

    千次阅读 2015-08-31 19:34:03
    Windows 10 中面向开发人员的新增功能 Windows 10 及新增的开发人员工具将提供新通用 Windows 平台支持的工具、功能和体验。在 Windows 10 上安装完工具和 SDK 后,你可以随时创建新的通用 ...
  • 在过去,程序员总是与数据库不可分割,不可避免要使用数据库相关的SQL语句。ORM对象关系映射技术因此而生, NHibernate是.NET平台下 用于实现ORM的热门工具,微软公司不甘落后,推出了ADO.NET Entity Framework...
  • 专升本-计算机公共课考点分析Windows 7 操作系统26. 操作系统的概念27. 操作系统的功能28. 操作系统的主要特征29. 操作系统的分类30. 常用操作系统简介31. Windows 7 的基本操作32. 窗口的组成33. 对话框操作34. ...
  • Windows任务管理器的五个“为人知”应用大家知道任务管理器,在系统中能够起到一个,让用户知道哪些程序正在运行的作用。但是这只是它所"管辖范围"内的其一项功能,还有很多"为人知"的应用潜能,没被人们所挖掘...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,282
精华内容 15,712
关键字:

利用windows任务栏不可