如何才能把应用程序的图标加入IE的标准按钮栏?

cucumber 2000-08-29 08:22:00
如何才能把应用程序的图标加入IE的标准按钮栏?象NETANTS、词霸那样
...全文
170 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
silver 2001-01-10
  • 打赏
  • 举报
回复
呵呵,全功略在这里!!

主题:隆重推出!!!!!朋友,你想在IE里。。。。
--------------------------------------------------------------------------------


也许这也算是ATL大扫盲课程的一个实验课?我不知道,嘻嘻!
  我只知道这个例子很有用!呵呵!IE 5 ToolBar Extension Button,一些老哥已经找了很久了8?:-)

首先要感谢金山词霸2000哈,嘻嘻!我是在一次安装金山词霸时偶然发现注册表的某些“变化”,进而摸索出这条技术的。

  说真的,如今的programmer无一例外地整天在网上搜索并使用着先人给我们留下的大量宝贵的免费代码。呜呼!谨以此plug-in献给那些整天在“幕后”给我们默默写代码的无名英雄们,我们的软件有一部分属于你们!!!!!向你们致敬!

废话就这么多,打开VC,我们自己做一个ie toolbar extension button吧!:-) let's go!

建立一个ATL工程的方法不用说乐吧?(看看《ATL大扫盲之2.5 & 2.6吧》)选File->New->ATL Com Wizard,起个your gril friend的名字,比如我就起了个“梁咏琪”怎么样?够cool吧?!....然后全部取默认值!以前说的比脸还干净的组件库就生成了!

然后Insert->New ATL Object....选Object组中的“Simple Object”,下一步,在Short Name中输入“DM_IE_TBBtn”,然后(全部接受默认值)按OK。瞧!我们又生成了一个比脸还干净的接口!这就是我们的IE工具栏啦哈!你也许会说,现在这个接口能干P呀?!哈!接着往下看哪!...

要让我们的接口能在IE工具栏中响应用户点击,一个重要的工作是让它实现IOleCommandTarget接口。为什么?嘻嘻!这个问题我可以不回答吗?:-) 看资料呗!.....那么如何实现该接口?别指望App Wizard乐,手工干吧!

双击左边的CDM_IE_TBBtn再到右边的类定义中添加IOleCommandTarget支持....


#include // IOleCommandTarget在这儿,先去他家把他请出来8然后:class ATL_NO_VTABLE CDM_IE_TBBtn : public IOleCommandTarget, public CComObjectRootEx,....再:BEGIN_COM_MAP(CDM_IE_TBBtn) COM_INTERFACE_ENTRY(IOleCommandTarget).....最后在类的public段中添加接口定义: /////////////////////////////////////////// // IOleCommandTarget Implementation STDMETHOD (QueryStatus) (const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText); STDMETHOD (Exec) (const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdExecOpt, VARIANTARG *pvaIn, VARIANTARG *pvaOut); // End of IOleCommandTarget Implementation ////////////////////////////////////////////
完了?啊!8-| 就这么简单?啊!没搞错吧?当然没有!

下面再打开EM_IE_TBBtn.cpp添加接口实现就OK乐!


STDMETHODIMP CDM_IE_TBBtn::QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText){ if( ! prgCmds ) return E_POINTER; for(ULONG i = 0; i < cCmds;i++) prgCmds[i].cmdf = OLECMDF_SUPPORTED | OLECMDF_ENABLED; return S_OK;}STDMETHODIMP CDM_IE_TBBtn::Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdExecOpt, VARIANTARG *pvaIn, VARIANTARG *pvaOut){ switch( nCmdExecOpt ) { case OLECMDEXECOPT_DODEFAULT: MessageBox(NULL,_T("天哪!这么简单?!"),_T("这就是插件?!"),MB_OK); break; default: break; } return S_OK;}

理论上我们的插件就可以使用了,但我们还需要将它插到IE里,请注意
HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Internet Explorer\\Extension子键!嘻嘻!好了,到此为止,聪明的你已经知道一切了,剩下的事就不用我说了,在上载的源代码中有readme.htm说得十分详细,大家自己读一读吧!

http://vg1.homeip.net/pub/DM_IE_PlugIn.zip


cita2000 2001-01-09
  • 打赏
  • 举报
回复
haha1
Kingron 2000-11-21
  • 打赏
  • 举报
回复
xixi,我抄的。已经测试通过。
这个问题其实很简单,象前面的一位老兄说的一样,研究一下注册表即可实现,下面我把它的实现方法告诉你,具体操作自己应该会吧(你说在VC下实现了,怎么会在Delphi中不行呢?)写入以下路径::
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions\ 新建一个主键:{11111111-F40A-11D1-B792-444553540001}该主键的命名规则为:前面的八位为自定义的十六进制数位(从0~9的数字,a~e的字母,该例为:11111111),如果要定义多个按钮,前八位的定义不能相同,后面的字串要原封不动的抄下来。然后新建一系列的字符串值。
"CLSID"= "{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}"直接照搬,不能改动,
"Default Visible"= "Yes":表示在鼠标移到自定义按钮上时,按钮上所显示的图标。
"HotIcon"= "D:\handshak.ico":表示在IE的工具栏中,是否显示自定义按钮。
"Icon"= "D:\skyline.ico":表示在正常状态时,按钮上的图标。
"Exec"= "D:\program.exe":表示自定义按钮被按下时,所执行的应用程序。
"ButtonText"= "hello":表示在鼠标移到自定义按钮上时,浮现的提示文字。
"MenuText"= "&Hello":表示点击"工具"菜单后,菜单中所显示的自定义菜单项
"MenuStatusBar"= "How Are You":表示当鼠标指向自定义菜单项时,在IE中的状态栏中显示的提示文字
就这样,很简单,你试试看,万一有问题,对照Netant(同一子键下)看一下,别忘了给我加分啊!
sss_sheng 2000-09-09
  • 打赏
  • 举报
回复
本站c++版有,我问的!
whitehare 2000-09-07
  • 打赏
  • 举报
回复
如果在WIN98下只要用鼠标拖动桌面上的快捷方式到其它快捷按钮空隙间即可WIN95不支持
如果是想把自己编著的应用程序的图标加入标准按钮栏~?改注册表吧!

如何改?
你可以先手工该并备份注册表用COMP 或其他工具比较一下文件有何改动?
自己动手吧?
SCUM 2000-09-03
  • 打赏
  • 举报
回复
改注册表!

6,849

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧