1 Son düzenleyen, Mehmet K (03.01.2010 13:02:36)

Konu: Birden fazla Ethernet Kartların MAC adresleri

IT yöneticeler bazen  WSH'yı  (Windows Script Host) güvenlik nedeniyle kapatıyorlar. Böyle bir durumda WMI çalışmaz ve internet de sık sık GETOBJECT("winmgmts:\" ile görülen kodlarda çalışmaz.

Çözüm:

Visual Fox Pro
DECLARE INTEGER GetAdaptersInfo IN iphlpapi STRING @pAdapterInfo, LONG @pOutBufLen

 
LOCAL cBuffer, nBufSize, nAnzAdapter
LOCAL nAdrLen, cAdr, nIdx, nCnt
nBufSize = 0
cBuffer = ""
 
* cBuffer için nekadar yer ayırmamız gerektiğini bilmediğiniz için ...
=GetAdaptersInfo(@cBuffer, @nBufSize)   && nBufSize da gereken Byte sayızı bize geri gelecek
cBuffer = REPLI(CHR(0), nBufSize)
 
IF GetAdaptersInfo(@cBuffer, @nBufSize) <> 0 && ERROR_SUCCESS
  =MESSAGEBOX('GetAdaptorsInfo hata oluşdu', 16)
  RETURN
ENDIF
 
nAnzAdapter = LEN(cBuffer) / 640  && her bir kayıt 640 Byte
 
nIdx = 0
DO WHILE nAnzAdapter > 0
  nAdrLen = ASC(SUBSTR(cBuffer, nIdx + 401, 1))  && size of NIC address string
  cAdr = SUBSTR(cBuffer, nIdx + 405, nAdrLen)  && NIC address
 
  cID_Dec = ''
  cID_Hex = ''
 
  FOR nCnt = 1 TO nAdrLen
    cID_Dec  = cID_Dec + IIF(nCnt>1,',','') + ALLTRIM(STR(ASC(SUBSTR(cAdr,nCnt,1))))
    cID_Hex  = cID_Hex + IIF(nCnt>1,'-','') + RIGHT(TRANSFORM(ASC(SUBSTR(cAdr,nCnt,1)),'@0'),2)
  NEXT
 
  ? 'NIC ID (dec): '+cID_Dec
  ? 'NIC ID (hex): '+ cID_Hex
  ?
  nAnzAdapter = nAnzAdapter -1
  nIdx = nIdx +640
ENDDO
 
CLEAR DLLS GetAdaptersInfo

Command Prompt da getmac komutunu vererek sonucu kontrol edebilirsiniz

Bir projenin bitmesi için 3 seçenek vardır: hızlı, ucuz, iyi. Bu seçeneklerden iki tanesini seçiniz.

2

Re: Birden fazla Ethernet Kartların MAC adresleri

IP adres, SubMask ve Default Gateway için:

Visual Fox Pro
nAdrLen = ASC(SUBSTR(cBuffer, nIdx + 401, 1))  && size of NIC address string

cAdr = SUBSTR(cBuffer, nIdx + 405, nAdrLen)  && NIC address
*---
cIP  = SUBSTR(cBuffer, nIdx + 433, 16)  && IP adres
nPos = AT(CHR(0x00), cIP)
cIP  = SUBSTR(cIP,1, nPos -1)
*---
cSubMsk = SUBSTR(cBuffer, nIdx + 449, 16)  && SubMask
nPos = AT(CHR(0x00), cSubMsk)
cSubMsk  = SUBSTR(cSubMsk,1, nPos -1)
*---
cDefaultGateWay= SUBSTR(cBuffer, nIdx + 473, 16)  && SubMask
nPos = AT(CHR(0x00), cDefaultGateWay)
cDefaultGateWay= SUBSTR(cDefaultGateWay,1, nPos -1)

Command Prompt da ipconfig /all komutunu vererek sonucu kontrol edebilirsiniz

Bir projenin bitmesi için 3 seçenek vardır: hızlı, ucuz, iyi. Bu seçeneklerden iki tanesini seçiniz.