VB使用CopyMemory字符串处理
不能直接使用CopyMemoryStr,应该将字符串转为byte数组,然后使用CopyMemory
Property Get item() As String
If h = 0 Then ErrRaise ERROR_INVALID_DATA
'BugAssert p <> pNull
Dim c As Long, ptr0 As Long
Dim ab() As Byte
'取出BSTR的长度
CopyMemory c, ByVal p, 4
If c > 0 Then
ReDim ab(c - 1)
CopyMemory ByVal VarPtr(ab(0)), ByVal (p + 4), c
item = ab
End If
End Property
Property Let item(s As String)
If h = 0 Then ErrRaise ERROR_INVALID_DATA
'BugAssert p <> pNull
Dim c As Long
Dim ab() As Byte
c = LenB(s)
ab = s
' 重新将BSTR放回内存中
CopyMemory ByVal p, c, 4
CopyMemory ByVal (p + 4), ByVal VarPtr(ab(0)), c
End Property
相关文档:
'读数据到二进制字段
Public Sub ReadfromBLOB(filed As ADODB.Field, Filen As String)
Dim DataFile As Integer, Fl As Long, Chunks As Integer
Dim Fragment As Integer, Chunk() As Byte, i As Integer
'传送块单位大小
Const ChunkSize As Integer = 16384
Dim MediaTemp As String
Dim lngOffset As Long
Di ......
VB根据窗口标题获取应用程序完整路径(来自网络)
Option Explicit
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 A ......
很久以前的一个代码了。。。。。那时还沉迷于研究WindowsXP登录密码的计算方法。。。。
先新建一个VB工程,画一个CommandButton,改名为cmdGetSYSKEY,画一个TextBox,改名为txtSYSKEY,然后粘贴下面的代码,运行即可,在WindowsXP SP2 Build 2600 + VB6.0 SP6下测试通过,获得的SYSKEY与Cain&Abel v4.9.6一致。。。。 ......
引言:
做一个控件, 用于 数据采样如示波器, 可以添加,删除曲线, 设置曲线的相关属性: 线型,颜色,等...
过程:
先创建 线 类, 在用户控件里实现 线 对象创建, 并声明一个 集合, 用于 存放建立的线对象.
问题 ......
【函数】
GetFileVersionInfo
【操作系统】
Win9X:Yes
WinNT:Yes
【声明】
GetFileVersionInfo Lib "version.dll" Alias "GetFileVersionInfoA" &n ......