我已经写了一个 工具条 运行上的任务栏。不幸的是,在安装后,用户已经启用。是否有一个方式告诉资源管理器打开(或关闭)一个给定的工具栏?

我想为安装程序,国家统计局,打开工具栏安装完成时(我意识到,一个插件将是必要的)。

我也想知道它是否能够自动地启用工具栏所有的用户,例如在企业环境,其中多个用户共用一个电脑。

有帮助吗?

解决方案

  • 这个演示评论并通过模拟按键
  • Vista有API要做到这一点,与 ShowDeskBandHideDeskBand
  • 编辑:这个代码现在可以添加一个deskband目(从Pinvoke.net, 这些 两个 MSDN论坛的问题):

    [ComImport]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    [Guid("4CF504B0-DE96-11D0-8B3F-00A0C911E8E5")]
    public interface IBandSite
    {
        [PreserveSig]
        uint AddBand([In, MarshalAs(UnmanagedType.IUnknown)] Object pUnkSite);
        [PreserveSig]
        void RemoveBand(uint dwBandID);
    }
    
    
    private uint AddDeskbandToTray(Guid Deskband)
    {
        Guid IUnknown = new Guid("{00000000-0000-0000-C000-000000000046}");
        Guid ITrayBand = new Guid("{F60AD0A0-E5E1-45cb-B51A-E15B9F8B2934}");   
        Type TrayBandSiteService = Type.GetTypeFromCLSID(ITrayBand, true);
        IBandSite BandSite = Activator.CreateInstance(TrayBandSiteService) as IBandSite;
        object DeskbandObject = CoCreateInstance(Deskband, null, CLSCTX.CLSCTX_INPROC_SERVER, IUnknown);
        return BandSite.AddBand(DeskbandObject);
    }
    

而且,一个例子使用:

Guid address_toolbar_guid = new Guid("{01E04581-4EEE-11D0-BFE9-00AA005B4383}");
uint band_id = AddDeskbandToTray(address_toolbar_guid);

这将是有意义的,一个类似的呼吁RemoveBand会也可以做到的,但作为然而,我不能让这代码的工作。另一个问题:加deskband关闭的时候应用程序,加入它关闭。

其他提示

您可能想查看这篇文章。它看起来像你可以使用的 ITrayDeskBand介面

我现在无法找到确切的网址,但我记得有被周围PDC2008的这一些讨论,其中基本上,这样的随机程序无法填充任务栏W / O用户的同意,这是没有专门启用。

这方面的一个副作用是,很少有用户甚至能够通过默认的WMP桌面栏。

据我了解,任务栏的位置和值等被存储在注册表(忘了具体位置),所以如果你发现了特定的注册表键,你可以采取它的位置,使您的安装程序中插入计算机上的注册表项,以便在任务栏被使能。

不是一个真正的回答你的问题,但是请,请!做的不可以写外壳扩展(和任务栏是一个外壳扩展)在.NET

这里的原因

基本上,你打破其他应用程序。

如果你检查好了,谷歌工具条,而一个EXE运行背后(GoogleDesktop.exe)存在,所以,如果你坚持在路上或谷歌搜索栏被实例化,你应该再次检查TrayBandSiteService并作出支持的EXE ...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top