我已经创build了一个工具栏,我希望从用C#编写的systray应用程序启用,实际的工具栏启用是使用[DLLImport]从C ++部分完成的。
目前我使用:
SHLoadInProc(__uuidof(MyBandLoader))
但在Vista上失败(SHLoadInProc不再实现),并在IE6的Windows XP SP2(快速启动工具栏重新启动后消失)。
在Vista上,我尝试过使用:CocreateInstance()和BandSite-> AddBand(),但是使用工具栏dll的guid给了我一个分段错误或地址栏。
如何添加一个新的button到Windows资源pipe理器?
TB_SETPADDING消息对垂直填充没有影响
JavaScript可以删除所有工具栏,地址栏和设置窗口大小吗?
Internet Explorer:安装没有pipe理员权限的工具栏(UAC)
Vista工具栏如何忽略或找出边框填充设置?
有没有另一种方法来启用从XP和Vista的另一个程序的工具栏?
创build螺纹钢控制和带钢筋工具带入钢筋
PyQt4 Windows – 工具栏操作不起作用。 我怎样才能解决他们?
工具栏中的button大小 – win32程序
静态生成后,Qt图标不会加载
在Vista上,有一个名为ITrayDeskBand的新记录不佳的界面。
通过CoCreateInstance创建一个实例,然后调用ShowDeskBand([工具栏的CLSID])在返回的指针(在C + +中 – 我不知道你是如何创建所有相关位在C#中的PInvoke – 可能会更容易写一个简单的C ++ dll来公开这个函数)
这只适用于Vista,但在XP上,您需要继续上面的SHLoadInProc方法,因此您需要测试操作系统版本并执行相应的操作。
如果你从代码项目文章中提取代码时要小心 – 它充满了微妙的错误,虽然其中许多都在评论中讨论
我已经使用过那个,但它只是告诉你必须制作一个工具栏,而不是如何从另一个程序启用它。
一个人不应该使用.net来创建Explorer进程内的任何COM对象。 如果另一个.net组件使用已经加载到浏览器进程中的不同框架版本,则这将不起作用。 每个进程只有一个.net框架。 MS从来没有提出用任何.net语言开发桌面带的样本。
Vista上唯一的方法就是使用ITrayDeskBand界面来显示工具栏。 但是,这将显示一个确认框给用户,他可以拒绝显示工具栏。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。