高分求教,IE右键菜单的实现中(像蚂蚁等),在DLL中怎样调用主程序

佣工7001 2002-04-22 08:51:32
有详细例子,再加分!
...全文
143 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
佣工7001 2002-04-23
  • 打赏
  • 举报
回复
本来以为会有什么好办法,看来还得凭力气实现
dev_uoboy 2002-04-22
  • 打赏
  • 举报
回复
老张啊?最近我忙,很少上啦,你咱们改昵称了,我差点认不出来了
kimryo 2002-04-22
  • 打赏
  • 举报
回复
哦,对了,用的WM_COPYDATA!简单吧!

你也可以用filemapping或pipe等其他IPC method.
kimryo 2002-04-22
  • 打赏
  • 举报
回复
JetCarCatch.AddUrl(Url, Info, external.menuArguments.document.Url)

这一行就是调用,你的程序可以实现一个command string来添加,不过好像不好使,原来做过一个一样的功能,不过好像给删了...我找找。

uoboy:

老李啊,喳最近不见你上QQ尼?工程扎样了?
kimryo 2002-04-22
  • 打赏
  • 举报
回复
JetCarCatch.AddUrl(Url, Info, external.menuArguments.document.Url)

这一行就是调用,你的程序可以实现一个command string来添加,不过好像不好使,原来做过一个一样的功能,不过好像给删了...我找找。

uoboy:

老李啊,喳最近不见你上QQ尼?工程扎样了?
dev_uoboy 2002-04-22
  • 打赏
  • 举报
回复
有例子,不过我只有ATL的例子。

你EMAIL?或是QQ?
tiger_qi 2002-04-22
  • 打赏
  • 举报
回复
我也想知道COm如何实现的,关键是从那个接口派生

我也很困惑,又具体的例子吗??
dev_uoboy 2002-04-22
  • 打赏
  • 举报
回复
用COM实现啊,写一个ActiveX的dll,并且注册时将你的GUID创建在子个特定的注册表键之下,接口要求从一个现有的接口派生,重载其中的一些函数就可以达到IE的事件通知功能。这个咚咚叫BHO,具体你查查MSDN,搜索BHO,会有很多的。不过他教的是用ATL,但只要你对COM熟悉,用BCB也行只是有一些代码要手工添加,不像ATL中那么爽
佣工7001 2002-04-22
  • 打赏
  • 举报
回复
waiting......
佣工7001 2002-04-22
  • 打赏
  • 举报
回复
dev_uoboy(过程编程→面向对象) :你所说的我知道,我是问,蚂蚁的DLL中怎末调用其主程序实现添加URL?
dev_uoboy 2002-04-22
  • 打赏
  • 举报
回复
我看了一下,它应该是注册表中控制的。
你打开HKEY_USERS\S-1-5-21-515967899-1275210071-682003330-500\Software\Microsoft\Internet Explorer
在里面应该有一个MenuExt打开它,在它下面就有那些软件扩展的菜单,比如网际快车,如果你装了网际快车那么在IE右键菜单里就会有一个“使用网际快车下载全部链接”你看注册表,哈刚好就有它。打开来看看,里面用一个htm文件控制着它程序的执行。

比如网际快车,他有一个默认的字符串值,里面指向的一个jc_link.htm文件,我打开来看了看,果然,控制下载的和启动网际快车的程序全部是这个HTM里用VBSCRIPT实现的,看看它的内容吧:
<script language="VBScript">
'Great thanks to Vladimir Romanov(Author of ReGet Pro)
'Download selected link

Sub AddLink(Url,Info)
On Error Resume Next
set JetCarCatch=CreateObject("JetCar.Netscape")
if err<>0 then
MsgBox("FlashGet not properly installed!"+ vbCrLf+"Please install FlashGet again")
else
call JetCarCatch.AddUrl(Url, Info, external.menuArguments.document.Url)
end if
end sub

Sub OnContextMenu()
set srcEvent = external.menuArguments.event
set EventElement = external.menuArguments.document.elementFromPoint ( srcEvent.clientX, srcEvent.clientY )
if srcEvent.type = "MenuExtAnchor" then
set srcAnchor = EventElement
do until TypeName(srcAnchor)="HTMLAnchorElement"
set srcAnchor=srcAnchor.parentElement
Loop
Call AddLink(srcAnchor.href,srcAnchor.innerText)
elseif srcEvent.type="MenuExtImage" then
if TypeName(EventElement)="HTMLAreaElement" then
Call AddLink(EventElement.href,EventElement.Alt)
else
set srcImage = EventElement
set srcAnchor = srcImage.parentElement
do until TypeName(srcAnchor)="HTMLAnchorElement"
set srcAnchor=srcAnchor.parentElement
if TypeName(srcAnchor)="Nothing" then
call AddLink(srcImage.href,srcImage.Alt)
exit sub
end if
Loop
Call AddLink(srcAnchor.href,srcImage.Alt)
end if
elseif srcEvent.type="MenuExtUnknown" then
set srcAnchor = EventElement
do until TypeName(srcAnchor)="HTMLAnchorElement"
set srcAnchor=srcAnchor.parentElement
if TypeName(srcAnchor)="Nothing" then
Call AddLink(EventElement.href,EventElement.innerText)
exit sub
end if
Loop
Call AddLink(srcAnchor.href,srcAnchor.innerText)
elseif 1=1 then
MsgBox("Unknown Event Source """ + srcEvent.type + """" + vbCrLf + "Please send description of error to jetcar@163.net")
end if
end sub


call OnContextMenu()

</script>
airy1727 2002-04-22
  • 打赏
  • 举报
回复
flag
dev_uoboy 2002-04-22
  • 打赏
  • 举报
回复
已经发出来了,你注意查收。

主题是:检测 IE 事件的ATL
佣工7001 2002-04-22
  • 打赏
  • 举报
回复
加不上,满意的话,我另开帖子给分
佣工7001 2002-04-22
  • 打赏
  • 举报
回复
我的email:dajianshi@eyou.com
等待中。。。
加分!
Screencapta是一个简单易用的屏幕截图工具。 Screencapta是Dhruv和Mohd设计的右键单击上下文菜单的易于使用的屏幕捕获工具。 Shoaib。 Screencapta是易于使用的屏幕捕获工具。 只需按上下文菜单项之一即可捕获整个或部分屏幕。 常见问题解答:如何使用Screencapta扩展程序截屏? 只需右键单击页面,然后在两个可用选项之间进行选择。 选择“捕获可视部分”以捕获整个可见屏幕,或者选择“捕获屏幕的一部分”以首先选择屏幕截图的尺寸。 通过选择第二个选项,您将看到两条指导线,以帮助您选择开始位置。 尽管已安装了扩展程序,并且可以看到上下文菜单项,但是单击这些项时仍会发生提示。 怎么了? 如果您刚刚安装了扩展程序,请确保在使用扩展程序之前刷新页面。 Easy Screen需要在页面上注入一个小的脚本,以便在您开始捕获屏幕时显示指导线。 为什么Easy Screen的屏幕记录使用PNG格式? PNG是一种光栅图形文件格式,如果选择了文本和图像的组合,则支持无损数据压缩,质量更高。 如果您喜欢其他格式,只需使用图像查看器打开捕获的屏幕截图,然后将其保存为新格式即可。 屏幕截图图像的质量是否取决于屏幕分辨率? 是的,屏幕快照正在捕获定义的图像区域内的数字图像,即像素。 因此,像Retina这样的高分辨率屏幕将具有更多像素和更详细的屏幕截图。 支持语言:English

13,825

社区成员

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

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