校园高干文:VB高手进来看看有办法吧?

来源:百度文库 编辑:中科新闻网 时间:2024/05/03 11:40:08
为了用VB对内存进行操作,用以下代码,如果打开一个计算器程序,触发按纽的Click事件就应该顺利走完,可每次到
pHandle = OpenProcess(Process_All_Access, False, pid)
If (pHandle = 0) Then
MsgBox "没有找到句柄!"
这里就过不去了???

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, dwProcessId As Long) As Long
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

'以上是函数的模块声明部分

'下面是按纽的Click事件
Private Sub Command1_Click()
' 声明一些需要的变量
Dim hwnd As Long ' 储存 FindWindow 函数返回的句柄
Dim pid As Long ' 储存进程标识符( Process Id )
Dim pHandle As Long ' 储存进程句柄
' 首先取得目标窗口的句柄
hwnd = FindWindow(vbNullString, "计算器")
If (hwnd = 0) Then
MsgBox "没有发现程序!"
Exit Sub
End If
' 取得进程标识符
GetWindowThreadProcessId hwnd, pid

' 使用进程标识符取得进程句柄
pHandle = OpenProcess(Process_All_Access, False, pid)
If (pHandle = 0) Then
MsgBox "没有找到句柄!"
Exit Sub
End If

' 关闭进程句柄
CloseHandle hProcess
MsgBox "成功!"
End Sub

高手都来看看呀!
是哪里出问题了?
新建一个模块将API函数的声明粘贴进去,必须在同一行,或者用连接符.
我的QQ:41808850,谢谢啦!!!

这题只能自己写,有空了我写一下!
你最好是去先查查这几个API的用法!