[高分求解] WebBrowser 如何模拟响应 javascript 的右键菜单?

macenjie 2013-08-07 12:29:36
在有些网页中,单击鼠标右键,弹出的是JAVASCRIPT响应的 div 弹出层。
请问如何用 C# WebBrowser 来模拟右键来弹出这个 DIV 的层?
100分相赠,谢谢大家!
...全文
182 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2013-08-07
  • 打赏
  • 举报
回复
用IE10的js调试工具跟踪下,直接调用菜单执行后对应的js函数就可以了,没必要模拟菜单的弹出。
threenewbee 2013-08-07
  • 打赏
  • 举报
回复
引用 4 楼 macenjie 的回复:
[quote=引用 3 楼 lizhi3186575 的回复:] 你可以在WebBrowser通过WebBrowser.Document.InvokeScript("JS函数名")的方式来调用网页中的JS代码,
由于别人网页的javascript 代码太复杂,又是加密混淆后的,直接调用JS函数名谈何容易啊[/quote] 所以让你先用IE DevTools调试下,获取函数名。
macenjie 2013-08-07
  • 打赏
  • 举报
回复
引用 3 楼 lizhi3186575 的回复:
你可以在WebBrowser通过WebBrowser.Document.InvokeScript("JS函数名")的方式来调用网页中的JS代码,
由于别人网页的javascript 代码太复杂,又是加密混淆后的,直接调用JS函数名谈何容易啊
人生导师 2013-08-07
  • 打赏
  • 举报
回复
你可以在WebBrowser通过WebBrowser.Document.InvokeScript("JS函数名")的方式来调用网页中的JS代码,
macenjie 2013-08-07
  • 打赏
  • 举报
回复
webbrowser 不能模拟右键吗?
江湖评谈 2013-08-07
  • 打赏
  • 举报
回复
WebBrowser提供了四种响应JS方式。重载IDocHostUIHandler接口,window.external方法,可实现替换JS本来的方法用自己的方法。从DOM树外层文档到内层寻找获取节点也可实现自己对于JS方法的实现。另外两种就是通过自己的程序调用层层剥离jS函数方式实现。原理都差不多,主要是需要对IDispatch接口进行重载。
jshi123 2013-08-07
  • 打赏
  • 举报
回复
确实,你应该学会用调试工具去找到合适的处理方式。 代码不需要都看懂,只要找到相关的处理部分就可以了。最好用chrome调试,可以利用它的dom事件断点方式。比如鼠标右键点击可以侦听下面两个事件: 设好断点后,在页面上点右键,调试器就会停在相关的处理语句上。 经过混淆的js可以用格式化功能把它重新排版整齐,因为通常我们只是需要找到入口函数,所以混淆后看不懂的部分影响不大,对外可供调用的名字一般都是很直观的,所以也很好找。 如果实在找不到,可以用p/invoke方式模拟点击鼠标,用SendMessage或mouse_event
源码来自:https://pan.quark.cn/s/a4b39357ea24 《C++ Primer》作为C++编程领域中的一部权威著作,主要服务于初学者和经验丰富的开发者,致力于帮助他们深入掌握C++的核心知识。 第一章通常会详细讲解C++语言的基础概念和语法结构,包括变量的使用、数据类型的分类、常量的定义、运算符的应用以及基础的输入输出操作。 接下来,我们将对这一章中的核心知识点和可能的习题解答进行深入分析。 ### 1. 变量与数据类型在C++编程中,变量被视为存储数据的媒介。 每一个变量都必须预先声明其数据类型,常见的数据类型有整型(int)、浮点型(float)、双精度浮点型(double)以及字符型(char)。 例如:```cppint age = 25; // 声明一个整型变量age并赋予其初始值25float weight = 70.5f; // 声明一个浮点型变量weight并赋予其初始值70.5char grade = A; // 声明一个字符型变量grade并赋予其初始值A```### 2. 常量与字面量常量指的是不可更改的值,可以通过`const`关键字进行声明。 例如:```cppconst int MAX_SIZE = 100; // 声明一个整型常量MAX_SIZE,其值为100```字面量是指程序中直接书写的值,如`42`、`3.14`或`"Hello"`。 ### 3. 运算符C++提供了多种运算符,涵盖了算术运算符(+,-,*,/,%)、比较运算符(==,!=,<,>,<=,>=)、逻辑运算符(&&,||,!)以及赋值运算符(=,+=,-=,*=,/=,%=)等。 ### 4. 输入与输出在C++中,使用`std::cin`来实现输...

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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