Page 1 sur 1

DupItemID

MessagePublié: 01 Août 2005 à 13:13
par Stephane Maillard
[syntax="ls"]Type BlockID
hPool As Long
Block As Integer
End Type

Const APIModule = "NNOTES" ' Windows

Declare Function OSPathNetConstruct Lib APIModule Alias "OSPathNetConstruct" _
( Byval P As Long, Byval S As String, Byval F As String, Byval N As String) As Integer
Declare Function NSFDbOpen Lib APIModule Alias "NSFDbOpen" _
( Byval P As String, hDB As Long) As Integer
Declare Function NSFDbClose Lib APIModule Alias "NSFDbClose" _
( Byval hDB As Long) As Integer
Declare Function NSFNoteOpen Lib APIModule Alias "NSFNoteOpen" _
( Byval hDB As Long, Byval N As Long, Byval F As Integer, hNT As Long) As Integer
Declare Function NSFNoteClose Lib APIModule Alias "NSFNoteClose" _
( Byval hNT 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 Function NSFItemInfo Lib APIModule Alias "NSFItemInfo" _
( Byval hNT As Long, Byval N As String, Byval nN As Integer, iB As BlockID, D As Integer, vB As BlockID, nV As Long) As Integer
Declare Function Peek Lib "MSVCRT" Alias "memcpy" _
( N As Any, Byval P As Long, Byval B As Long) As Long

Function DupItemID(dbServer$, dbFilePath$, noteID$, item$) As String
db$ = String$(1024, " ")
OSPathNetConstruct 0, dbServer$, dbFilePath$, db$

Dim hDB As Long
NSFDbOpen db$, hDB
If hDB = 0 Then Exit Function

Dim hNT As Long
NSFNoteOpen hDB, Clng("&H" & noteID$), 0, hNT
If hNT = 0 Then Exit Function

Dim iB As BlockID, vB As BlockID
NSFItemInfo hNT, item$, Len(item$), iB, dt%, vB, nV&
If Not iB.hPool = 0 Then
p& = OSLockObject(iB.hPool) + iB.Block
n% = 0
Peek n%, p& + 15, 1
OSUnlockObject iB.hPool
DupItemID = Cstr(n%)
End If

NSFNoteClose hNT
NSFDbClose hDB
End Function[/syntax]