Hi @ all,
habe da mal eine Frage an euch, da ich nun schon eine weile an einem Problem sitze und es einfach nicht hin bekomme.
Was ich vor habe: Nachdem der User seinen Lotus Notes 7.0.2 - Client gestartet hat soll ein Agent ein Script ausführen, welches die Mac-Adresse des PCs, an welchem er sich anmeldet ausliest und daraufhin in ein Dokument in einer DB schreibt.
Was bereits funktioniert: Da wir bereits mit einer speziellen Startdatenbank arbeiten war es kein Problem einen Agenten zu schreiben, welcher eine Funktion aus einer Script-Bibliothek ausführt, welche den Code zum auslesen der Mac-Adresse beinhaltet. Das auslesen der Mac-Adresse und das schreiben in eine Datenbank funktioniert...
Was nicht funktionert: Du ausgelesende Mac-Adresse wird nur dann richtig angezeigt, wenn diese keine "0" (Nullen) in einem "abschnitt" vorangestellt ist.
Beispiel für falsche Anzeige der Mac-Adresse: 00:0D:60:66:6A:0C --> wird so ausgelesen und angezeigt 0:D:60:66:6A:C
Man sieht, dass die erste "0" fehlt, die "0" vor dem D und die "0" vor dem C. Die erste "0" ist kein Problem. Ich stell einfach im Script eine voran, da ich weiss, dass alle Mac-Adressen unserer PCs mit einer "0" anfangen.
Beispiel für die richtige Anzeige einer Mac-Adresse: 00:17:A4:18:91:4E --> wird unter der Voraussetzung, dass ich eine "0" im Script voranstelle auch so angezeigt.
Anbei das Script....
Vielleicht könnt ihr mir sagen wo das Problem liegt oder habt vielleicht einen Vorschlag wie man es anders machen könnte
============================================================================================= Option Public Const NCBASTAT = &H33
Const NCBNAMSZ = 16
Const HEAP_ZERO_MEMORY = &H8
Const HEAP_GENERATE_EXCEPTIONS = &H4
Const NCBRESET = &H32
Type NCB
ncb_command
As Byte 'Integer
ncb_retcode As Byte 'Integer
ncb_lsn
As Byte 'Integer ncb_num
As Byte ' Integer ncb_buffer
As Long 'String ncb_length
As Integer ncb_callname
As String * NCBNAMSZ
ncb_name
As String * NCBNAMSZ
ncb_rto
As Byte 'Integer
ncb_sto As Byte
' Integer ncb_post
As Long ncb_lana_num
As Byte 'Integer ncb_cmd_cplt
As Byte 'Integer ncb_reserve(9)
As Byte ' Reserved, must be 0 ncb_event
As Long End Type Type ADAPTER_STATUS
adapter_address(5)
As Byte 'As String * 6 rev_major
As Byte 'Integer reserved0
As Byte 'Integer adapter_type
As Byte 'Integer rev_minor
As Byte 'Integer duration
As Integer frmr_recv
As Integer frmr_xmit
As Integer iframe_recv_err
As Integer xmit_aborts
As Integer xmit_success
As Long recv_success
As Long iframe_xmit_err
As Integer recv_buff_unavail
As Integer t1_timeouts
As Integer ti_timeouts
As Integer Reserved1
As Long free_ncbs
As Integer max_cfg_ncbs
As Integer max_ncbs
As Integer xmit_buf_unavail
As Integer max_dgram_size
As Integer pending_sess
As Integer max_cfg_sess
As Integer max_sess
As Integer max_sess_pkt_size
As Integer name_count
As Integer End Type Type NAME_BUFFER
name
As String * NCBNAMSZ
name_num
As Integer name_flags
As Integer End Type Type ASTAT
adapt
As ADAPTER_STATUS
NameBuff
(30
) As NAME_BUFFER
End Type Declare Function Netbios
Lib "netapi32.dll" (pncb
As NCB)
As Byte 'Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long) Declare Function GetProcessHeap
Lib "kernel32"
() As Long Declare Function HeapAlloc Lib "kernel32" (
ByVal hHeap
As Long,
ByVal dwFlags
As Long,
ByVal dwBytes
As Long)
As Long Declare Function HeapFree
Lib "kernel32" (
ByVal hHeap
As Long,
ByVal dwFlags
As Long, lpMem As Any)
As LongClass SysinfoDeclare Public Function GetMacAddress
As String Public Function GetMacAddress
() As String Dim myNcb
As NCB
Dim bRet
As Byte Dim macaddress
As String myNcb.ncb_command = NCBRESET
bRet = Netbios
(myNcb
) myNcb.ncb_command
= NCBASTAT
myNcb.ncb_lana_num
= 0
myNcb.ncb_callname
= "* "
Dim myASTAT A
s ASTAT, tempASTAT
As ASTAT
Dim pASTAT
As Long myNcb.ncb_length =
Len(myASTAT
) pASTAT = HeapAlloc
(GetProcessHeap
(), HEAP_GENERATE_EXCEPTIONS
_ Or HEAP_ZERO_MEMORY, myNcb.ncb_length
) If pASTAT
= 0
Then Print "memory allcoation failed!"
End If myNcb.ncb_buffer = pASTAT
bRet = Netbios
(myNcb
) CopyMemory myASTAT, myNcb.ncb_buffer, Len
(myASTAT
) macaddress =
Hex(myASTAT.adapt.adapter_address
(0
)) & "
0:"
& _ 'Vorangestellte 0 Hex(myASTAT.adapt.adapter_address
(1
)) _ & ":"
& Hex(myASTAT.adapt.adapter_address
(2
)) & ":"
_ & Hex(myASTAT.adapt.adapter_address
(3
)) _ & ":"
& Hex(myASTAT.adapt.adapter_address
(4
)) & ":"
_ & Hex(myASTAT.adapt.adapter_address
(5
)) HeapFree GetProcessHeap
(), 0, pASTAT
GetMacAddress
= macaddress
End Function End Class=============================================================================================Danke schonmal im Voraus für evtl. Mühen!
Grüße