Thank you. Works as needed.
>>Hi Al,
>>
>>How can I know my IP address from VFP? I have code for using the WBEM Scripting Object to interogate the network card but not sure how to get the IP address.
>>
>>TIA.
>
>This was posted here on the UT previously (I don't have search capability so I can't find it again and determine the author):
>
>
>CLEAR
>*1========================
>local lcTempFile, loWSH, lcLocalIP
>lcTempFile="LocalIP.txt"
>if file(lcTempfile)
> erase (lcTempFile)
>endif
>loWSH=CreateObject("Wscript.Shell")
>loWSH.run("command /c ipconfig > "+lcTempfile,0,1)
>if file(lcTempFile)
> lcLocalIP=upper(filetostr(lcTempFile))
> lcLocalIP=substr(lcLocalIP, at('IP ADDRESS',lcLocalIP))
> lcLocalIP=substr(lcLocalIP, at(':',lcLocalIP)+2)
> lcLocalIP=substr(lcLocalIP, 1, at(chr(13),lcLocalIP)-1)
> ? lcLocalIP
> *messagebox(lcLocalIP)
>endif
>
>
>*2========================
>oSocket = CreateObject("MSWinsock.Winsock")
>? oSocket.LocalIP
>
>*3==========================
>local lcTempFile, loWSH, lcLocalIP
>lcTempFile="LocalIP.txt"
>if file(lcTempfile)
> erase (lcTempFile)
>endif
>loWSH=CreateObject("Wscript.Shell")
>loWSH.run("command /c ipconfig > "+lcTempfile,0,1)
>if file(lcTempFile)
> lcLocalIP=upper(filetostr(lcTempFile))
> lcLocalIP=substr(lcLocalIP, at('IP ADDRESS',lcLocalIP))
> lcLocalIP=substr(lcLocalIP, at(':',lcLocalIP)+2)
> lcLocalIP=substr(lcLocalIP, 1, at(chr(13),lcLocalIP)-1)
>endif
>IF !EMPTY(lcLocalIP)
> ? lcLocalIP
> ? [Mac Address: ] +IpToMacAddress(lcLocalIP)
>ENDIF
>RETURN
>
>FUNCTION IpToMacAddress(lcIP)
> DECLARE INTEGER inet_addr IN ws2_32.dll STRING cIP
> DECLARE INTEGER SendARP IN iphlpapi.dll;
> INTEGER destIP, INTEGER sourceIP,;
> STRING @ pMacAddr, INTEGER @ PhyAddrLen
> LOCAL lnHr, lnIpAddr, lcMacAddr, lnLen
> lnIpAddr = inet_addr(lcIp)
> lcMacAddr = REPLICATE(CHR(0),6)
> lnLen = 6
> lnHr = SendARP(lnIpAddr,0,@lcMacAddr,@lnLen)
> RETURN BinaryToMac(lcMacAddr,lnLen)
>ENDFUNC
>
>FUNCTION BinaryToMac(lcMacAddr, lnLen)
> LOCAL lcMac, xj
> lcMac = ""
> FOR xj = 1 TO lnLen - 1
> lcMac = lcMac + RIGHT(TRANSFORM(ASC(;
> SUBSTR(lcMacAddr,xj,1)),"@0"),2) + ":"
> ENDFOR
> lcMac = lcMac + RIGHT(TRANSFORM(ASC(;
> SUBSTR(lcMacAddr,lnLen,1)),"@0"),2)
> RETURN lcMac
>ENDFUNC
>
>*4========================
>
>PUBLIC IPSocket
>crlf=CHR(13)+CHR(10)
>* Show local ip address
>IPSocket = CREATEOBJECT("MSWinsock.Winsock")
>IF TYPE('IPSocket')='O'
> IPAddress = IPSocket.LocalIP
> localhostname=IPSocket.localhostname
> remotehost=IPSocket.remotehost
> remotehostip=IPSocket.remotehostip
> lcMsg = "Local IP = " + IPAddress+crlf+"local host = "+localhostname;
> +crlf+"Remotehost = "+remotehost+crlf+"Remotehostip = "+remotehostip
> ?lcMsg
> *MessageBox(lcMsg)
>ELSE
> lcMsg = "Winsock is Not Installed"
> ?lcMsg
> *MESSAGEBOX ("Winsock Is Not Installed!")
>ENDIF
>
>
>
>and this one:
>
>
>clear
>DECLARE INTEGER GetAdaptersInfo IN iphlpapi;
> STRING @pAdapterInfo, ;
> LONG @pOutBufLen
>
>LOCAL ;
> Buffer, ;
> Bufsize
>
>Bufsize = 4096
>Buffer = REPL(CHR(0), Bufsize)
>Local lcLocalIP, lcGateway
>IF GetAdaptersInfo(@Buffer, @Bufsize) = 0
> lcLocalIP = STRTRAN(SUBSTR(Buffer, 433,15), CHR(0), "")
> lcGateway = STRTRAN(SUBSTR(Buffer, 473,15), CHR(0), "")
> ? "Local IP: "+lcLocalIP
> ? "Gateway: "+lcGateway
>ENDIF
>
>IF !EMPTY(lcLocalIP)
> ?
> ? "IP Used to Obtain Mac Address: "+lcLocalIP
> ? "Mac Address: "+IpToMacAddress(lcLocalIP)
>ENDIF
>RETURN
>
>FUNCTION IpToMacAddress(lcIP)
> DECLARE INTEGER inet_addr IN ws2_32.dll STRING cIP
> DECLARE INTEGER SendARP IN iphlpapi.dll;
> INTEGER destIP, INTEGER sourceIP,;
> STRING @ pMacAddr, INTEGER @ PhyAddrLen
> LOCAL lnHr, lnIpAddr, lcMacAddr, lnLen
> lnIpAddr = inet_addr(lcIp)
> lcMacAddr = REPLICATE(CHR(0),6)
> lnLen = 6
> lnHr = SendARP(lnIpAddr,0,@lcMacAddr,@lnLen)
> RETURN BinaryToMac(lcMacAddr,lnLen)
>ENDFUNC
>
>FUNCTION BinaryToMac(lcMacAddr, lnLen)
> LOCAL lcMac, xj
> lcMac = ""
> FOR xj = 1 TO lnLen - 1
> lcMac = lcMac + RIGHT(TRANSFORM(ASC(;
> SUBSTR(lcMacAddr,xj,1)),"@0"),2) + ":"
> ENDFOR
> lcMac = lcMac + RIGHT(TRANSFORM(ASC(;
> SUBSTR(lcMacAddr,lnLen,1)),"@0"),2)
> RETURN lcMac
>ENDFUNC
>
In the End, we will remember not the words of our enemies, but the silence of our friends - Martin Luther King, Jr.