如何在PB中使用OpenProcess()、ReadProcessMemory()函数,高手请帮忙!急!

lizx 2000-07-08 04:11:00
我需要在PB中使用OpenProcess()、ReadProcessMemory()两个WinAPI函数,
但由于该函数使用了指针变量,不知在PB中如何使用? 请高手指点,最好
提供例程。如成功,定给分!!!

WIN32 API 参考:
HANDLE OpenProcess( //函数:打开并设定某进程的访问权限。
DWORD fdwAccess, //设为'Process_vm_read',表示该进程可读;
BOOL fInherit, //可设为'FALSE',表示不需要继承;
DWORD IDProcess //要打开的进程号;
); //函数成功返回该进程的打开句柄,否则返回'NULL'。

BOOL ReadProcessMemory( //函数:读取某已打开进程中的内存。
HANDLE hProcess, //要读取进程的打开句柄(OpenProcess函数的返回值);
LPCVOID lpBaseAddress, //指定要读取进程的起始内存地址;
LPVOID lpBuffer, //指定一个缓冲区,用于接收内存地址空间的数据;
DWORD cbRead, //指定要读取的字节数;
LPDWORD lpNumberOfBytesRead //指出实际传送给缓冲区的字节数,
设为'NULL'则忽略该参数;
); //函数成功返回'TRUE',失败返回'FALSE'。

PowerBuilder WinAPI 函数声明(摘抄):
FUNCTION ulong OpenProcess(ulong dwDesiredAccess,ulong
bInheritHandle,ulong dwProcessId) LIBRARY "kernel32.dll"
FUNCTION ulong ReadProcessMemory(ulong hProcess,ref Any lpBaseAddress,
ref Any lpBuffer,ulong nSize,ref ulong lpNumberOfBytesWritten)
LIBRARY "kernel32.dll"
...全文
436 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kkk3k 2000-08-04
  • 打赏
  • 举报
回复
FUNCTION ulong OpenProcess(ulong dwDesiredAccess,ulong
bInheritHandle,ulong dwProcessId) LIBRARY "kernel32.dll"
FUNCTION ulong ReadProcessMemory(ulong hProcess,ulong lpBaseAddress,
ref blob lpBuffer,ulong nSize,ref ulong lpNumberOfBytesWritten)
LIBRARY "kernel32.dll"

ulong hProcess,n,Address
blob lpBuffer
lpBuffer=blob(string(space(4)))
Address=400000
...
hProcess = OpenProcess(16,0,ProcessId)//使该进程可读
ReadProcessMemory(hProcess,Address,lpBuffer,4,n)

kkk3k 2000-08-04
  • 打赏
  • 举报
回复
FUNCTION ulong OpenProcess(ulong dwDesiredAccess,ulong
bInheritHandle,ulong dwProcessId) LIBRARY "kernel32.dll"
FUNCTION ulong ReadProcessMemory(ulong hProcess,ulong lpBaseAddress,
ref blob lpBuffer,ulong nSize,ref ulong lpNumberOfBytesWritten)
LIBRARY "kernel32.dll"

ulong hProcess,n,Address
blob lpBuffer
lpBuffer=blob(string(space(4)))
Address=400000
hProcess = OpenProcess(16,0,ProcessId)//使该进程可读
ReadProcessMemory(hProcess,Address,lpBuffer,4,n)
kkk3k 2000-08-04
  • 打赏
  • 举报
回复
FUNCTION ulong OpenProcess(ulong dwDesiredAccess,ulong
bInheritHandle,ulong dwProcessId) LIBRARY "kernel32.dll"
FUNCTION ulong ReadProcessMemory(ulong hProcess,ulong lpBaseAddress,
ref blob lpBuffer,ulong nSize,ref ulong lpNumberOfBytesWritten)
LIBRARY "kernel32.dll"

ulong hProcess,n,Address
blob lpBuffer
lpBuffer=blob(string(space(4)))
Address=400000
hProcess = OpenProcess(16,0,ProcessId)//使该进程可读
ReadProcessMemory(hProcess,Address,lpBuffer,4,n)

wolcy 2000-07-08
  • 打赏
  • 举报
回复
具体用法没试过,可以将
FUNCTION ulong ReadProcessMemory(ulong hProcess,ref Any lpBaseAddress,
ref Any lpBuffer,ulong nSize,ref ulong lpNumberOfBytesWritten)
LIBRARY "kernel32.dll"
改为
FUNCTION ulong ReadProcessMemory(ulong hProcess,ulong lpBaseAddress,
ref blob lpBuffer,ulong nSize,ref ulong lpNumberOfBytesWritten)
LIBRARY "kernel32.dll"
试一下
在调用函数前将blob变量初始化一个大小
blob lb
lb=blob(string(space(60000)))

1,072

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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