弹出窗口(精选3篇)
弹出窗口 篇1
1 引言
当今, 信息化技术高速发展, 企业中产生不同的业务系统。有些系统业务逻辑繁琐, 每天都需耗费大量的精力在系统操作中, 自动化处理操作就会显得尤其重要。
Web数据抓取 (Web Scraping) 是指从网站上提取信息的一种计算机软件技术。Web数据抓取程序模拟浏览器的行为,能将任何可以在浏览器上显示的数据提取出来, 因此也称为屏幕抓取 (Screen Scraping)。
Web Scraping是一个使用计算机程序自动从目标网页中摘取某些数据进行相应处理的过程, 整个过程不需要人工干预。
WebBrowser控件是一种基于组件对象模型 (COM) 的软件编程模块, 它存在于.NET命名控件System.Windows.Forms中,可以用来支持浏览器功能的实际应用, 可以轻松地在Windows窗体应用程序中嵌入一个浏览器来显示和操控网页。
C# 编程语言提供了面向软件组件编程的完整支持 , 对使用组件对象模型的应用来说, 访问得到了简化。通过使用Visual Studio C# 开发工具可以将WebBrowser控件和Windows窗体整合到同一个应用程序中。
2 Web Scraping 的原理及 MSHTML
Web Scraping程序在计算机网络通信的传输层, 使用TCP协议与Web服务器进行数据传输, 在应用层使用HTTP协议与服务器进行数据交互。它与服务器的通信过程和HTTP客户端程序浏览器一致。
Web Scraping程序从功能上可以划分为两大模块 : HTTP交互模块和HTML解析模块。对一个网页的抓取过程是: 首先HTTP交互模块向服务器的Web端口发起TCP连接, 连接建立后, 交互模块即可向Web服务器发送HTTP请求报文,当HTTP交互模块接收到服务器端的应答报文后, 进行HTTP包拆封, 提取其中的HTML数据, 然后将数据交由HTML解析模块进行数据解析和提取。
微软公司的网页浏览器Interneet Explorer其实只是一个外壳程序, 真正的浏览网页工作是由嵌入其窗口的封装在shdocvw.dll中的WebBrowser Control来完成的。调用mshtml.dll来解析网页, mshtml.dll一方面处理HTML解析以及作为脚本引擎, 另一方面实现活动文档服务器接口允许应用程序以标准的COM接口来把它嵌入到程序中并通过它暴露的接口来访问其中的网页及网页元素。
MSHTML是微软公司的一个COM组件 , 该组件封装了HTML语言中的所有元素及其属性, 通过其提供的标准接口 ,可以访问指定网页的所有元素。MSHTML提供了丰富的HTML文档接口, 其中IHTMLDocument3是跟.NET里的文档对象相似的一个接口, 提供封装了对HTML元素完整操作的IHTMLElement接口, 通过IHTMLElement可以准确地判断HTML元素节点的类型, 还可以获取HTML元素节点的所有属性。
3 ShowModalDialog 弹出窗口抓取处理方案
ShowModalDialog不创建新的浏览器窗口 , 也不创建新的浏览器对象, 而是在WebBrowser的同一个线程中创建的窗口。当ShowModalDialog () 被调用后, 浏览器线程会创建一个对话框, 该对话框包含两个窗口, 利用SPY++工具可以检测出窗口的详细信息, 父窗口的类名为“Internet Explorer_TridentDlgFrame” , 子窗口的类名为“Internet Explorer_Server” ,该子窗口即为IE内核的窗口, 可以通过给该窗口发送消息,进行一些自动化操作 (如按键、鼠标点击、自动填单等)。当子窗口创建时, 父窗口会收到消息, hwnd值即为父窗口的值,wParam的值即为Internet Explorer_Server的窗口。捕获窗口后就可以捕捉到IE内核窗口的句柄了。
利用WindowAPI函数FindWindow方法, 参数lpClassName为父窗口类名, lpWindowName为父窗口标题名。
[DllImport (" user32.dll")]
public static extern IntPtr FindWindow ( string lpClassName,string lpWindowName) ;
当ShowModalDialog窗口弹出时, 程序自动开启定时器,调用FindWindow方法进行窗口的捕获。
IntPtr hwnd = FindWindow ( " Internet Explorer_TridentDlgFrame" , " 通信管理系统 -- 网页对话框") ;
当程序捕获到父窗口时, 调用FindWindowEx方法进行hwnd子窗口的捕获。FindWindowEx方法其参数hwndParent为父窗体句柄 (即为上述hwnd), 参数hwndChildAfter为下一个子窗体句柄, 参数lpszClass为子窗体类名, lpszWindow为子窗体标题名。
[DllImport (" user32.dll")]
public static extern IntPtr FindWindowEx ( IntPtr hwndParent,IntPtr hwndChildAfter, string lpszClass, string lpszWindow) ;
调用FindWindowEx方法形式为IntPtr hchild = FindWindowEx (hwnd, IntPtr.Zero, " Internet Explorer_Server" , String.Empty) ;
当程序成功捕获到父窗体和子窗体时关闭定时器, 接下来程序的任务是对捕获到的窗口进行自动化操作。操作方案利用MSHTML的调用, 进行解析HTML元素, 再进行HTML内容的处理, 即是对窗体内部单据的填写和提交。操作处理核心代码如下。
4 结语
介绍了Web数据抓取技术以及其实现的原理, 以及如何利用C# 进行ShowModalDialog窗体抓取及对窗体自动化操作程序的开发。展示了Web数据抓取技术在Web程序自动化操作方面的优势, 改善了频繁无谓的人工操作。
弹出窗口 篇2
看到这种现象,根据以往的经验,可能是被恶意网页代码光顾了。对付此类问题,我有过多次经验。
首先,用最新杀毒软件查杀病毒,没有发现问题。其次,打开注册表编辑器,找到相应的键值(主要是与RUN有关的键值,具体可参考相关的资料),恶意代码网页***www.movie-down.com/hosts.asp也无影无踪。最后,对整个注册表,对系统的其它可能启动程序的位置进行搜索,也毫无所获。
此后的几天这个问题一直困扰着我。有一天,我正在思考这个问题,忽然心中一动,这个主页是以hosts.asp开始,是不是与Windows的Hosts文件有关呢?
在c:windows文件夹下(这是Windows9x系统中,若Windows以上系统则是在c:windowssystem32drivers=etc)或用查找功能找到hosts.sam文件,这个文件可以用记事本或写字板打开,添入以下一行,注意IP和域名之间用一个空格间隔开:
0.0.0.0***www.movie-down.com
保存文件,重新打开IE浏览器,讨厌的注册窗口终于消失了,
这个方法是利用了Hosts文件优先于DNS查询的原则,把该电影网站的域名指向一个可能不存在的IP地址0.0.0.0,避开该网站,自然也就不会遇到这个可恶的提问窗口了。
如果有多个这样的需屏蔽的网站,可以依据上述方法将其域名与一虚假的IP地址或局域网内的任一IP相连,就可以解决问题。
什么是Hosts文件?
Hosts文件是Windows系统中一个负责IP地址与域名快递解析的文件,以ASCII格式保存。计算机在键入域名(比如www.baidu.com)的时候,首先会去看看Hosts文件汇总有没有关于此域名IP地址的记录。
弹出窗口 篇3
● 浏览器总是弹出窗口
○ 编辑ISO镜像
○ 备份“飞信”的短信记录
○ WinRAR无类型文件图标
○ Office 2007自动关闭
浏览器总是弹出窗口
Q最近不管是在浏览器地址栏中输入搜索关键词还是网址,总会自动弹出一个与我输入的关键词内容相关的窗口。请问这是什么原因?
A据你描述的情况,你的系统是中了流氓软件yayad,中了此流氓软件后便会在用户输入相关信息后自动弹出与此信息相关的窗口。yayad一般会被安装在系统盘的C:Program Files目录下,自带有卸载程序并不能将它完全卸载,你可以使用《Windows优化大师》、《超级兔子》之类的软件将其卸载。最后打开注册表编辑器中的查找窗口,搜索并删除所有与“yayad”有关的注册表项即可。
编辑ISO镜像
Q使用UltraISO打开ISO光盘镜像文件,试图在里面添加一个1KB大小的文本文件,保存之后原ISO文件由原来的90MB变成了2GB。请问,如何才能保持镜像文件的原始大小?
A开UltraISO后再打开ISO文件,接下来再单击UltraISO主窗口菜单“文件/属性”,在打开的窗口中选择“优化文件”项,最后单击“确认”按钮即可,如图所示。
备份“飞信”的短信记录
Q经常使用“飞信”给朋友发短信,现在须要重新安装系统了,我想将以前的短信记录备份起来,请问如何操作?
A开并登录“飞信”软件,单击菜单“操作/选项”,在打开的窗口中选择“消息历史”项,在右侧窗口中复制保存消息的历史记录对应的目录。在“资源管理器”中直接打开此目录并将之备份下来,重新安装“飞信”后在上面的消息历史窗口中重新设置“飞信”的消息目录为备份时的目录即可,如图所示。
WinRAR无类型文件图标
Q对一些大文件,我一般都是使用WinRAR进行分卷压缩,如果压缩的文件很大的话,压缩的分卷压缩包数目很多,而所有从*.r30开始的压缩包文件都显示为无类型文件,而*.r29等文件却显示为WinRAR的图标。请问这是什么原因?
A安装WinRAR程序后,系统会自动将*.r00~*.r29看作为一种文件类型并且由WinR AR的安装程序负责将这些文件进行注册,但*.r30及以上版本的软件默认情况下并没有在系统中注册,这并不影响你正常使用WinRAR。当然,你也可以通过命令来进行手工注册。单击“开始→运行”,输入“cmd”,在里面运行“for /L %d in(30,1,99)do assoc.r%d=WinRAR”命令,这样操作后,系统便会关联更多的Win R A R分卷压缩文件类型了,如图所示。
Office 2007自动关闭
Q我使用Office 2007,之前一切正常。但当我安装了Dr.eye 7.0商务版后,只要开启即时翻译功能后,再移动鼠标Office 2007就会自动关闭。请问这是什么原因?