500分提问,怎样在IE的工具栏中加入自已的工具栏?就像Google,sohu的工具栏!

cdws222 2003-03-04 11:23:40
如题


500分一定给,结贴后另开两贴送300分
...全文
110 55 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
55 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdws222 2003-03-13
  • 打赏
  • 举报
回复
好吧,就给你499分,给favorit1分吧
liuxing_1w 2003-03-12
  • 打赏
  • 举报
回复
眼花缭乱 啊?

有个问题。
在腾迅的浏览器加,是否一样。
如果自己制作浏览器,怎样预留接口…………
jbz 2003-03-12
  • 打赏
  • 举报
回复
高手如云呀。

是不是做出来就象Flashget在IE上的工具栏一样?太独特了。
  • 打赏
  • 举报
回复
已上传..
ftp://202.195.246.202/incoming/cker
evence 2003-03-12
  • 打赏
  • 举报
回复
学习,收藏。
WhyAndAnswer 2003-03-12
  • 打赏
  • 举报
回复
收藏先
whitelion 2003-03-12
  • 打赏
  • 举报
回复
咳……咳……
  • 打赏
  • 举报
回复
鼻涕么、????
penu 2003-03-12
  • 打赏
  • 举报
回复
我也要。

penu@sina.com
HUANG_JH 2003-03-12
  • 打赏
  • 举报
回复
to cker:
放到 ftp://202.195.246.202 啊,大家一起进步嘛
favorit 2003-03-12
  • 打赏
  • 举报
回复
感动呀~~~~~~
从此以后,偶的BCB专家分里,又多了cker给的1分:)
感动得什么什么都流出来了
  • 打赏
  • 举报
回复
嗬嗬,再开两贴。这样,

CKER请进来拿分...
并注明此贴
http://expert.csdn.net/Expert/topic/1488/1488928.xml?temp=.8139307。。。


ho ho...,偶想分想得慌啊。

favorit这么可怜,就给她一分吧。。。。:)
favorit 2003-03-12
  • 打赏
  • 举报
回复
再开两个帖子:cker,来抢分了!200分呀!

嘻嘻
liye20000 2003-03-12
  • 打赏
  • 举报
回复
cker 我也想要一分,liye20000@netease.com
cdws222 2003-03-12
  • 打赏
  • 举报
回复
好了,这500分肯定是cker的了,另外的300分怎么给你呀?
  • 打赏
  • 举报
回复
已发
fi9 2003-03-11
  • 打赏
  • 举报
回复
?!
眼都看花了!
还是有空再来看过吧!
记得在《程序员2002年合订本》中有一个例子,不过那是写面板的,我N天前也想过做像这样一个东东,所就看了一下那篇文章,主要还是由几个IE的Interface里面继承出来,然后用Interface来实现就可以了。虽然文章是做面板的,可是与此还是差不多的!
不过,经过上面N人的一堆堆代码应该是可以搞掂了吧!
cdws222 2003-03-11
  • 打赏
  • 举报
回复
mail:zhaosoft@21cn.com
  • 打赏
  • 举报
回复
//---------------------------------------------------------------------------
/**************************************************************************
#include statements
**************************************************************************/
#include <vcl.h>
#include <windows.h>

#include <ole2.h>
#include <comcat.h>
#include <olectl.h>
#include "ClsFact.h"

/**************************************************************************
GUID stuff
**************************************************************************/

//this part is only done once
//if you need to use the GUID in another file, just include Guid.h
#pragma data_seg(".text")
#define INITGUID
#include <initguid.h>
#include <shlguid.h>
#include "Guid.h"
#pragma data_seg()

/**************************************************************************
private function prototypes
**************************************************************************/

extern "C" BOOL WINAPI DllMain(HINSTANCE, DWORD, LPVOID);
BOOL RegisterServer(CLSID, LPTSTR);
BOOL RegisterComCat(CLSID, CATID);
BOOL UnregisterServer(CLSID);
BOOL UnregisterComCat(CLSID, CATID);

/**************************************************************************
global variables
**************************************************************************/

HINSTANCE g_hInst;
UINT g_DllRefCount;

/**************************************************************************

DllMain

**************************************************************************/

extern "C" BOOL WINAPI DllMain( HINSTANCE hInstance,
DWORD dwReason,
LPVOID lpReserved)
{
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
g_hInst = hInstance;
break;

case DLL_PROCESS_DETACH:
break;
}

return TRUE;
}

/**************************************************************************

DllCanUnloadNow

**************************************************************************/

STDAPI __export DllCanUnloadNow(void)
{
return (g_DllRefCount ? S_FALSE : S_OK);
}

/**************************************************************************

DllGetClassObject

**************************************************************************/

STDAPI __export DllGetClassObject( REFCLSID rclsid,
REFIID riid,
LPVOID *ppReturn)
{
*ppReturn = NULL;

//if we don't support this classid, return the proper error code
if( !IsEqualCLSID(rclsid, CLSID_SampleToolBand))
return CLASS_E_CLASSNOTAVAILABLE;

//create a CClassFactory object and check it for validity
CClassFactory *pClassFactory = new CClassFactory(rclsid);
if(NULL == pClassFactory)
return E_OUTOFMEMORY;

//get the QueryInterface return for our return value
HRESULT hResult = pClassFactory->QueryInterface(riid, ppReturn);

//call Release to decement the ref count - creating the object set it to one
//and QueryInterface incremented it - since its being used externally (not by
//us), we only want the ref count to be 1
pClassFactory->Release();

//return the result from QueryInterface
return hResult;
}

/**************************************************************************

DllRegisterServer

**************************************************************************/

STDAPI __export DllRegisterServer(void)
{
//Register the desk band object.
if(!RegisterServer(CLSID_SampleToolBand, TEXT("Sample &Tool Band")))
return SELFREG_E_CLASS;

//Register the component categories for the desk band object.
if(!RegisterComCat(CLSID_SampleToolBand, CATID_DeskBand))
return SELFREG_E_CLASS;

return S_OK;
}
/**************************************************************************

DllRegisterServer

**************************************************************************/

STDAPI __export DllUnregisterServer(void)
{
if(!UnregisterComCat(CLSID_SampleToolBand, CATID_DeskBand))
return S_FALSE ;

if(!UnregisterServer(CLSID_SampleToolBand))
return S_FALSE ;

return S_OK;
}
/**************************************************************************

RegisterServer

**************************************************************************/

#include <Registry.hpp>
BOOL RegisterServer(CLSID clsid, LPTSTR lpszTitle)
{
char szModule[MAX_PATH];
AnsiString strCLSID;

strCLSID = GUIDToString(clsid);
//get this app's path and file name
GetModuleFileName(g_hInst, szModule, MAX_PATH);

TRegistry *Registry = new TRegistry;
try
{
Registry->RootKey = HKEY_CLASSES_ROOT;

if(Registry->OpenKey("CLSID\\"+strCLSID,true))
{
Registry->WriteString("",lpszTitle);
Registry->OpenKey("InprocServer32",true);
Registry->WriteString("",szModule);
Registry->WriteString("ThreadingModel","Apartment");
}
else
return false;
//ToolBand
Registry->RootKey = HKEY_LOCAL_MACHINE;
if(Registry->OpenKey("Software\\Microsoft\\Internet Explorer\\Toolbar",true))
{
Registry->WriteString(strCLSID,"");
}
else
return false;

Registry->CloseKey();
}
__finally
{
delete Registry;
}
return true;
}

/**************************************************************************

UnregisterServer

**************************************************************************/

BOOL UnregisterServer(CLSID clsid)
{
AnsiString strCLSID;
strCLSID = GUIDToString(clsid);
TRegistry *Registry = new TRegistry;
try
{
Registry->RootKey = HKEY_CLASSES_ROOT;
if(Registry->KeyExists("CLSID\\"+strCLSID))
{
Registry->DeleteKey("CLSID\\"+strCLSID);
}
else
return false;

//ToolBand
Registry->RootKey = HKEY_LOCAL_MACHINE;
if(Registry->KeyExists("Software\\Microsoft\\Internet Explorer\\Toolbar"))
{
Registry->DeleteValue(strCLSID);
}
else
return false;
}
__finally
{
delete Registry;
}
return true;
}

/**************************************************************************

RegisterComCat

**************************************************************************/

BOOL RegisterComCat(CLSID clsid, CATID CatID)
{
ICatRegister *pcr;
HRESULT hr = S_OK ;

CoInitialize(NULL);

hr = CoCreateInstance( CLSID_StdComponentCategoriesMgr,
NULL,
CLSCTX_INPROC_SERVER,
IID_ICatRegister,
(LPVOID*)&pcr);

if(SUCCEEDED(hr))
{
hr = pcr->RegisterClassImplCategories(clsid, 1, &CatID);

pcr->Release();
}

CoUninitialize();

return SUCCEEDED(hr);
}

/**************************************************************************

UnregisterComCat

**************************************************************************/

BOOL UnregisterComCat(CLSID clsid, CATID CatID)
{
ICatRegister *pcr;
HRESULT hr = S_OK ;

CoInitialize(NULL);

hr = CoCreateInstance( CLSID_StdComponentCategoriesMgr,
NULL,
CLSCTX_INPROC_SERVER,
IID_ICatRegister,
(LPVOID*)&pcr);

if(SUCCEEDED(hr))
{
hr = pcr->UnRegisterClassImplCategories(clsid, 1, &CatID);
pcr->Release();
}

CoUninitialize();

return SUCCEEDED(hr);
}
  • 打赏
  • 举报
回复
完整的代码很多阿,贴出来大家都要看花眼了。
我还是说一说主要的过程吧。你给我个Mail,我发给你算了。

程序的主题就是要实现
class CExplorerBar : public IDeskBand,
public IInputObject,
public IObjectWithSite,
public IPersistStream,
public IContextMenu
{

...

//CKer Added.
IWebBrowser2* IE;
TForm1* Form1;
TWndMethod FOldWndProc;

这样一个COM对象类,由他来生成Form1的实例,普通的Form有一个小小的区别在于这个Form的父窗口是非VCL的,也就是IE。并且修改Form1的WindowProc...

....
加载更多回复(35)
实用标准文档实用标准文档 实用标准文档 实用标准文档 文案大全文案大全 文案大全 文案大全 题目 1 要想在 IE 看到您最近访问过的网站的列表可以 。 选择一项: 单击" 后退" 按钮 单击"标准按钮"工具栏上的 "历史"按钮 按 Backspace 键 按 Ctrl+F 键 反馈正确答案是:单击 "标准按钮"工具栏上的 "历史"按钮 题目 2 IE 界面,不包括在 "查看"->" 工具栏"的是 。 选择一项: 状态栏 链接烂 地址栏 标准功能按钮 反馈正确答案是:状态栏 题目 3 用 IE 访问网页时,一般在 才能单击鼠标访问网站里的信息。 选择一项: 鼠标变成闪烁状态时 鼠标依旧是箭头形状时 鼠标变成手形时 鼠标箭头旁边出现一个问号时 反馈正确答案是:鼠标变成手形时 题目 4 在发件服务器与收件服务器之间是通过某种协议来完成的,它是 选择一项: SNMP SMTP HTTP FTP 反馈正确答案是: SMTP 题目 5 超文本包含 。 选择一项: 特殊文本、链接文本 普通文本、链接文本 普通文本、特殊文本 普通文本、链接文本、特殊文本 反馈正确答案是:普通文本、链接文本 题目 6 下列选项,不属于 Internet 提供的服务的是 。 选择一项: 网络游戏 多媒体软件制作 远程登录 信息查询 反馈正确答案是:多媒体软件制作 题目 7 决定局域网特性的主要技术因素不包括以下 。 选择一项: 拓扑结构 传输形式 介质访问控制方式 电脑性能 反馈正确答案是:电脑性能 题目 8 以下对代理服务器说法不正确的是 。 选择一项: 不可以限制封锁 IP 地址 限制内网对外部的访问权限 保护局域网的安全 可以限制封锁 IP 地址 反馈正确答案是:不可以限制封锁 IP 地址 题目 9 在 Internet 选项窗口的 " 内容 " 选项卡,可以进行 方面的设置。 选择一项: 级审查、权限和安全信息 级审查、证书和个人信息 级审查、证书和安全信息 级审查、权限和个人信息 反馈正确答案是:级审查、证书和个人信息 题目 10 TCP协议把数据成若干数据段,称为 。 选择一项: 组 段落 协议单元 数据报 反馈正确答案是:数据报 题目 11 TCP/IP 协议的全称是 。 选择一项: 文件传输协议和网际协议 传输层协议和路由协议 文件传输协议和路由协议 传输层协议和网际协议 反馈正确答案是:传输层协议和网际协议 题目 12 Ping 远程 IP ,如果收到 个应答,表示成功地使用了默认网关。 选择一项: 8 1 4 16 反馈正确答案是: 4 题目 13 在 Outlook Express ,收到电子邮件时,系统预设信件最先会放在何处 。 选择一项: 已发送邮件 发件箱 收件箱 刪除的邮件 反馈正确答案是:收件箱 题目 14 "http:\\www.sohu.com" , http 表示的是 。 选择一项: 端口 协议名 文件名 服务器域名 反馈正确答案是:协议名 题目 15 IPv4 地址是由 数组成。 选择一项: 32 位十进制 16 位十进制 16 位二进制 32 位二进制 反馈正确答案是: 32 位二进制 题目 16 FTP服务器地址与特定目录之间用 符号开 选择一项: / + \ // 反馈正确答案是: / 题目 17 正在运行并能够做出应答正在运行并能够做出应答Ping 网关 IP ,如果应答正确, 表示局域网的 ___ 选择一项: 正在运行并能够做出应答 正在运行并能够做出应答 以上都不是 网关路由器 域名服务器 默认网关 反馈正确答案是:网关路由器 题目 18 移动笔记本用户最理想的接入网络的方式是 选择一项: 光纤 ADSL 同轴电缆 无线 LAN 反馈正确答案是:无线 LAN 题目 19 UDP的全称是 。 选择一项: 传输控制协议 超文本传输协议 用户数据报协议 文件传输协议 反馈正确答案是:用户数据报协议 题目 20 以下不属于目前常用的传输介质的是 。 选择一项: 同轴电缆 光纤 双绞线 卫星信道 反馈正确答案是:卫星信道 题目 21 另一则是对另一则是对互联网的普及, 在很大程度上依赖于两件事: 一是互联网的商业化, 网络信息的组织产生了一种崭新的方式 。 另一则是对 另一则是对 选择一项: 广域网 环球网( WW)W 局域网 企业内部网 反馈正确答案是:环球网( WW)W 题目 22 TCP/IP 协议 TCP协议负责 。 选择一项: 数据传输的可靠性 以上都不是 接入互联网 数据传输 反馈正确答案是:数据传输的可靠性 题目 23 关于网络协议,下列说法正确的是 。 选择一项: 以上都正确 协议的语法方面的规则定义了所交换的信息格式 协议是控制对等实体之间的通信规则 协议的实现,保
Excel自动插入图片 看到网上老是有人询问Excel自动插入图片的问题,刚好自己也很需要。看了看别人给出的答案,没有比较理想的方案,做了这3个文件,相信对外贸业务员或其它经常需要在Excel插入图片的人非常有用。 1.自动插入当前文件夹所有图片到B列并将图片名填入A列.xls 2.自动插入当前文件夹所有图片和图片名制作目录快捷键ctrl+i 3.自动根据A列型号插入当前文件夹用型号命名的jpg图片到B列.xls 注: 1.要能正常使用这些文件时,Excel的宏的安全性级别不能为低,请放心这些宏是用来完成上述任务,并非病毒。 2.文件与图片必须在同一个文件夹. 3. Ctrl+i插入图片,Ctrl+d 删除文档所有图片. 4.图片必须是jpg文件,如果你通常是使用其它格式的图片,可以告诉我,稍作调整。 5.在发给客户和他人之前,请将Sheet1复制到新的Excel文件,用新的文件发给他人,这样新文件就不会含有宏代码,以免别人误认为你的文件有病毒。 6.如果插入较多的图片,可能导致Excel文件很大!您可以在Excel按以下两种方式压缩图片: (1)按顺序点击菜单:文件->另存为->工具-压缩图片" (2)右键点击图片;在快捷菜单上选择显示或隐藏 '图片' 工具栏;点击 '图片' 工具栏上的 '压缩图片' 命令;选择 '应用于文档所有图片' 后,单击确定。 Michael Ho 54mikeho*sohu.com QQ:9900060 2010年

13,873

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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