[syntax="ls"]Const APIModule = "NNOTES" ' Windows
Declare Function AgentLSTextFormat Lib APIModule Alias "AgentLSTextFormat" _
( Byval hS As Long, hD As Long, hE As Long, Byval F As Long, Byval z As Long) As Integer
Declare Function OSMemAlloc Lib APIModule Alias "OSMemAlloc" _
( Byval T As Integer, Byval S As Long, hM As Long) As Integer
Declare Function OSMemFree Lib APIModule Alias "OSMemFree" _
( Byval hM As Long) As Integer
Declare Function OSMemGetSize Lib APIModule Alias "OSMemGetSize" _
( Byval hM As Long, N As Long) As Integer
Declare Function OSLockObject Lib APIModule Alias "OSLockObject" _
( Byval H As Long) As Long
Declare Sub OSUnlockObject Lib APIModule Alias "OSUnlockObject" _
( Byval H As Long)
Declare Sub PokeString Lib "KERNEL32" Alias "RtlMoveMemory" _
( Byval P As Long, Byval S As String, Byval N As Long)
Declare Sub PeekString Lib "KERNEL32" Alias "RtlMoveMemory" _
( Byval S As String, Byval P As Long, Byval N As Long)
Sub Click(Source As Button)
LS$ = |Sub TestMessage(S as String)
Messagebox "Testing: " & S
End Sub
Const A = 1| & Chr$(0)
Dim hS As Long
OSMemAlloc 0, Len(LS$) + 1, hS
If hS = 0 Then
Messagebox "Error: unable to alloc hS", 16, "Error"
Exit Sub
End If
p& = OSLockObject(hS)
PokeString p&, LS$, Len(LS$)
OSUnlockObject hS
Dim hD As Long, hE As Long
AgentLSTextFormat hS, hD, hE, 0, 0
OSMemFree hS
If Not hE = 0 Then
p& = OSLockObject(hE)
OSMemGetSize hE, n&
e$ = Space(n&)
PeekString e$, p&, n&
OSUnlockObject hE
OSMemFree hE
Messagebox e$, 0, "Error String"
End If
If Not hD = 0 Then
p& = OSLockObject(hD)
OSMemGetSize hD, n&
d$ = Space(n&)
PeekString d$, p&, n&
OSUnlockObject hD
OSMemFree hD
Messagebox d$, 0, "Result String"
End If
End Sub[/syntax]