Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Get my IP Address
Message
From
04/03/2010 09:56:22
 
 
To
04/03/2010 07:00:57
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Environment versions
Visual FoxPro:
VFP 9 SP2
Miscellaneous
Thread ID:
01452426
Message ID:
01452490
Views:
195
This message has been marked as the solution to the initial question of the thread.
>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
.·*´¨)
.·`TCH
(..·*

010000110101001101101000011000010111001001110000010011110111001001000010011101010111001101110100
"When the debate is lost, slander becomes the tool of the loser." - Socrates
Vita contingit, Vive cum eo. (Life Happens, Live With it.)
"Life is not measured by the number of breaths we take, but by the moments that take our breath away." -- author unknown
"De omnibus dubitandum"
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform