网站首页 >> 创业资讯 >> 正文 提交收录

关于vb内存监控源码的信息

时间:2022年10月17日 04:10:19

本文目录一览:

VB 怎么获得数据所在内存地址~并监视数据~

我这里就只说说实现原理,而不作详细的程序了。

首先是利用ToolHelp32工具枚举获取qq.exe所在的进程ID,

CreateToolhelp32Snapshot(), ProcessFirst32(), 等等,

然后根据所获得的进程ID,利用OpenProcess打开并取得其hProcess,

跟着读出该进程的数据区,利用ReadProcessMemory()实现(过程中应注意速度,作出筛选优化)

尔后扫描所获得的数据"\msgex.db"的位置,前面的东东就是 *** 号码了。

这是比较简单的 *** ,至于还有一些更好的,不过我这就不再多作冗言赘句了。

至于跟着怎么把他读出来显示在文本框上,Text1.Text = lpsz *** Number 就行了嘛。

什么是VB源码

这个词分为两部分来解释。

之一、VB

VB可以是指一种计算机语言,是Visual Basic的缩写,由美国微软公司开发;也可以指用来进行VB语言开发的开发平台,比如MicroSoft Visual Basic 6.0

计算机语言分为最早的也是最基本的机器语言(二进制语言)、低级语言(汇编)、高级语言(VB、C、C++、C#)。其中执行效率更高的是机器语言,它不需要编译可以直接被机器读懂。效率更低的是高级语言,它需要经过编译甚至多次编译才能转变为机器语言。但是高级语言是最接近自然语言的(如:英语),因此被广泛的使用。

第二、源码

类似的,用英语书写的可以用来交流的文字片断叫做文章,那么用VB语言来书写的可以被计算机编译平台理解的文字片断就叫做VB代码了。

那么如果有一个程序,是使用VB语言来写成的,那么这些VB语言就叫做该程序的VB源码

不知道这样解释楼主能不能理解

怎么用vb读取内存地址为00B61FF8的出牌的信息并显示出来,要vb详细过程的源代码

Attribute VB_Name = "GetModuleHandle"

Option Explicit

'************************************* 用于枚举进程*********************************

'CreateToolhelpSnapshot为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程[THREAD])建立一个快照[snapshot]。

'参数:

'dwFlags

'TH32CS_INHERIT -声明快照句柄是可继承的

'TH32CS_SNAPall -在快照中包含系统中所有的进程和线程

'TH32CS_SNAPheaplist -在快照中包含在th32ProcessID中指定的进程的所有的堆

'TH32CS_SNAPmodule -在快照中包含在th32ProcessID中指定的进程的所有的模块

'TH32CS_SNAPPROCESS -在快照中包含系统中所有的进程

'TH32CS_SNAPthread -在快照中包含系统中所有的线程

'th32ProcessID

'[输入]指定将要快照的进程ID。如果该参数为0表示快照当前进程。

'该参数只有在设置了TH32CS_SNAPHEAPLIST或TH32CS_SNAPMOUDLE后才有效,在其他情况下该参数被忽略,所有的进程都会被快照。

Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long

'参数: Handle hSnapshot传入的Snapshot句柄

'参数:LPMODULEENTRY3 lpme 指向一个 MODULEENTRY32结构的指针

'作用:从Snapshot得到之一个进程记录信息

Private Declare Function Module32First Lib "kernel32" (ByVal hSnapShot As Long, lppe As MODULEENTRY32) As Long

'参数: Handle hSnapshot传入的Snapshot句柄

'参数:LPMODULEENTRY3 lpme 指向一个 MODULEENTRY32结构的指针

'作用: 从Snapshot得到下一个Module记录信息

Private Declare Function Module32Next Lib "kernel32" (ByVal hSnapShot As Long, lppe As MODULEENTRY32) As Long

'关闭句柄

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Const TH32CS_SNAPPROCESS = H2 'TH32CS_SNAPPROCESS -在快照中包含系统中所有的进程?

Private Const TH32CS_SNAPmodule = H8 '表示对象为由th32ProcessID参数指定的进程调用的所有模块

Private Type MODULEENTRY32

dwSize As Long '指定结构的大小,在调用Module32First前需要设置,否则将会失败

th32ModuleID As Long '模块号

th32ProcessID As Long '包含本模块的进程号

GlblcntUsage As Long '本模块的全局引用计数

ProccntUsage As Long '包含模块的进程上下文中的模块引用计数

modBaseAddr As Byte '模块基地址

modBaseSize As Long '模块大小(字节数)

hModule As Long '包含模块的进程上下文中的hModule句柄

szModule As String * 256 '模块名

szExePath As String * 1024 '模块对应的文件名和路径

End Type

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long

'*************************************************************************

'**函 数 名: GetProcess

'**输 入: ByVal frmRuningProcess(Form) - 直接传入各对象名

'** : ByVal treProcess(TreeView) -

'** : ByVal lblProcessNumber(Label) -

'**输 出: 无

'**功能描述:建立进程树结构

'**全局变量:

'**调用模块:

'**作 者: Mr.David

'**日 期: 2007-11-27 14:09:37

'**修 改 人:

'**日 期:

'**版 本: V1.0.0

'*************************************************************************

Public Function GetProcModuleHandle(Filetit As String, Module As String) As Long

Dim hWndWC3 As Long

Dim PID As Long

Dim hOpen As Long

Dim lRet As Long

hWndWC3 = FindWindow(vbNullString, Filetit)

GetWindowThreadProcessId hWndWC3, PID

Dim hMSnapshot As Long

Dim strTreTxt As String

Dim lngRet As Long

Dim MEY As MODULEENTRY32

MEY.dwSize = Len(MEY)

hMSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPmodule, PID) '快照当前进程模块

MEY.szExePath = Space$(256)

lngRet = Module32First(hMSnapshot, MEY)

'内循环读取模块名

Do While lngRet 0

'注意一个进程的最后一个模块列出后继续列出下一个会出现类似 ??1??鏴? 的名称,这显然不是我们需要的,排除了。

'另外TreeView控件会自己处理文件名的Chr(0)字符,我们就由它处理了。

If InStr(1, MEY.szModule, Module, vbTextCompare) 0 Then

'Set treNode = treProcess.Nodes.Add(strTreKey, tvwChild, , MEY.szModule) '列出模块

GetProcModuleHandle = MEY.hModule

Exit Function

End If

lngRet = Module32Next(hMSnapshot, MEY) '获取下一模块

Loop

Call CloseHandle(hMSnapshot) '关闭模块快照句柄

Exit Function

End Function

Public Function GetProcModulePath(Filetit As String, Module As String) As String

Dim hWndWC3 As Long

Dim PID As Long

Dim hOpen As Long

Dim lRet As Long

hWndWC3 = FindWindow(vbNullString, Filetit)

GetWindowThreadProcessId hWndWC3, PID

Dim hMSnapshot As Long

Dim strTreTxt As String

Dim lngRet As Long

Dim MEY As MODULEENTRY32

MEY.dwSize = Len(MEY)

hMSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPmodule, PID) '快照当前进程模块

MEY.szExePath = Space$(256)

lngRet = Module32First(hMSnapshot, MEY)

'内循环读取模块名

Do While lngRet 0

'另外TreeView控件会自己处理文件名的Chr(0)字符,我们就由它处理了。

If InStr(1, MEY.szModule, Module, vbTextCompare) 0 Then

'Set treNode = treProcess.Nodes.Add(strTreKey, tvwChild, , MEY.szModule) '列出模块

GetProcModulePath = MEY.szExePath

Exit Function

End If

lngRet = Module32Next(hMSnapshot, MEY) '获取下一模块

Loop

Call CloseHandle(hMSnapshot) '关闭模块快照句柄

Exit Function

End Function

Public Function StrSub(ByVal src As String, ParamArray dst()) As String

Dim i As Long

Dim j As Long

Dim l1 As Long

Dim l2 As Long

Dim src1 As String

Dim src2 As String

For i = 0 To UBound(dst)

l1 = Len(src)

l2 = Len(dst(i))

j = InStr(src, dst(i))

If j = 0 Then

i = i + 1

GoTo top

End If

src1 = left(src, j - 1)

src2 = right(src, l1 - j - l2 + 1)

src = src1 + src2

top:

Next

StrSub = src

End Function

vb中如何实现监控制定某文件夹下文件的变化

'首先先引用Microsoft Scripting RunTime

'放置3个timer控件,依次命名为timer1,timer2,timer_time

'将下面代码放到代码框中。

Dim size_a As Long, size_b As Long, time_5 As Integer

Dim fso1 As New FileSystemObject

Dim folder1 As Folder

Private Sub Form_Load()

Set folder1 = fso1.GetFolder("d:\samples") '文件夹的位置,根据自己的修改

Print folder1.Size, time_5

Timer1.Interval = 1

Timer2.Interval = 2

Timer_time.Interval = 9999

End Sub

Private Sub Timer_time_Timer()

time_5 = time_5 + 10

If time_5 = 300 Then

Shell "d:\play.exe" '文件的位置,根据自己的修改

Shell "d:\sendmail.exe" '文件的位置,根据自己的修改

End If

End Sub

Private Sub Timer1_Timer()

Set folder1 = fso1.GetFolder("d:\samples") '文件夹的位置,根据自己的修改

size_a = folder1.Size

If size_b size_a Then time_5 = 0

End Sub

Private Sub Timer2_Timer()

Set folder1 = fso1.GetFolder("d:\samples") '文件夹的位置,根据自己的修改

size_b = folder1.Size

End Sub