2,723
社区成员
发帖
与我相关
我的任务
分享
看看这两个对你有用吗,可以通过下面第一个,取得内存信息,然后截取到你要到的部分。或者替换指定部分,然后写回去。不过个人感觉还是MyFll.Fll简单。
* Allocating a memory block with GlobalAlloc
* 分配、指定、写入、读出、释放一个内存块
*-------------------------------------------------
Clea
#Define GMEM_DDESHARE 8192
#Define GMEM_DISCARDABLE 256
#Define GMEM_DISCARDED 16384
#Define GMEM_FIXED 0
#Define GMEM_INVALID_HANDLE 32768
#Define GMEM_LOCKCOUNT 255
#Define GMEM_LOWER 4096
#Define GMEM_MODIFY 128
#Define GMEM_MOVEABLE 2
#Define GMEM_NOCOMPACT 16
#Define GMEM_NODISCARD 32
#Define GMEM_NOTIFY 16384
#Define GMEM_NOT_BANKED 4096
#Define GMEM_SHARE 8192
#Define GMEM_VALID_FLAGS 32626
#Define GMEM_ZEROINIT 64
Declare integer GlobalAlloc in kernel32 integer wFlags, integer dwBytes
Declare integer GlobalSize in kernel32 integer hMem
Declare integer GlobalFree in kernel32 integer hMem
Declare Integer GlobalLock IN kernel32 Integer hMem
Declare Integer GlobalUnlock IN kernel32 Integer hMem
lcin = " abc./'[]@ #-_4 7defg江南红雨klmn opz "
? "写入字符 :", lcin
Hmem = GlobalAlloc(0, len(lcin)) && 创建内存块
? "内存块指针:", hMem
lncb = GlobalSize ( hMem ) && 获得内存块大小
? "内存块大小:", lncb
= CopytoMem ( hMem, lcin, lncb ) && 写入内存块内容
lcout = REPLICATE(chr(0), lncb)
= CopyfromMem(hMem, @lcout, lncb) && 读取内存块内容
? "读取字符 :", lcout
? "释放内存块:", GlobalFree(hMem) && 释放内存块
Clea dlls
Return
*----------------------
Function CopytoMem
Lparameter lnDestBuffer, lpVoidSource, lpcb
Declare integer lstrcpyn in kernel32 as RtlCopytoMem integer lnDestBuffer, string @lpSource, integer nLength
= RtlCopytoMem( lnDestBuffer, lpVoidSource, lpcb )
Return lpVoidSource
Endfunc
Function CopyfromMem
Lparameter lpVoidSource, lpDestString, lpcb
Declare integer lstrcpyn in kernel32 as RtlCopyfromMem string @lpDestString, integer lpSource, integer nLength
= RtlCopyfromMem( @lpDestString, lpVoidSource, lpcb)
lpDestString = chrtran( lpDestString, chr(0), "")
Return lpDestString
Endfunc
* Using ZeroMemory function
* 清空内存到 0
*-------------------------------
Clea
Declare RtlZeroMemory IN kernel32 As ZeroMemory;
STRING @ dest,;
INTEGER numBytes
lcText = REPLI("A", 50)
? "[" + lcText + "]"
= ZeroMemory (@lcText, Len(lcText))
? "[" + lcText + "]"