Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Get my IP Address
Message
 
 
To
04/03/2010 10:02:11
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Environment versions
Visual FoxPro:
VFP 9 SP2
Miscellaneous
Thread ID:
01452426
Message ID:
01452496
Views:
52
Thanks, Tracy.

>>I searched Re: Ip number Thread #1147234 Message #1147239
>
>I Just tested those and if you have more than one adapter (like I do) then it only returns the 1st adapter's ip address. Another option might be to do something like the first one to get the one used for the internet connection or the 2nd one and parse the file for multiple adapters/ip addresses:
>
>
>oForm = CREATEOBJECT('Form')
>oform.NewObject('_webbrowser','_webbrowser4',home()+'gallery\_webview.vcx')
>
>With oform._webbrowser
>.top=0
>.left=0
>.Navigate('http://www.whatismyip.org')
>.Height = 230
>.Width = 900
>.visible = .f.
>ENDWITH 
>
>DO WHILE oform._webbrowser.Readystate <> 3 
>INKEY(1)
>ENDDO
>
>MESSAGEBOX('My IP is '+ CHRTRAN(oform._webbrowser.Document.Body.InnerHtml,'',''))
>oform.RemoveObject("_webbrowser")
>
>RELEASE oform
>
>
>2nd:
>
>
>LOCAL lcTempFile, loWSH, lcLocalIP
>lcTempFile="LocalIP.txt"
>IF FILE(lcTempFile)		&&erase leftovers from old run
>	ERASE (lcTempFile)
>ENDIF
>loWSH=CREATEOBJECT("Wscript.Shell")
>loWSH.RUN("command /c ipconfig > "+lcTempFile,0,1)
>*--Change the below to find multiple adapter ip adresses
>IF FILE(lcTempFile)		&&read the file and parse it
>	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)
>	MESSAGEBOX(lcLocalIP)
>ENDIF
>
>
>>
>>>>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 leftovers from old run
>>>  erase (lcTempFile)
>>>endif
>>>loWSH=CreateObject("Wscript.Shell")
>>>loWSH.run("command /c ipconfig > "+lcTempfile,0,1)
>>>if file(lcTempFile)		&&read the file and parse it
>>>  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
>>>
If it's not broken, fix it until it is.


My Blog
Previous
Reply
Map
View

Click here to load this message in the networking platform