VFP 6
Zbigniew Grzelczak - 10-06-2006 00:03
VFP 6
Czy można z poziomu VFP6 uzyskać nr IP sieci localnej, na którym jesteśmy? Jeśli trzeba sięgnąć do API, to czy ktoś widział gdzieś jakieś przykłady?
Pozdrawiam
Kazimierz Pszenny - 13-06-2006 01:11
*Ja stosuję to:
DO decl
************************* IF InitWinsock() x_lcLocalHost = GetLocalHostName() x_lcLocalIP = GetHostIP(x_lcLocalHost) komputer_nazwa = x_lcLocalHost && nazwa komputera komputer_ip = x_lcLocalIP && numer_IP_komputera = WSACleanup() ENDIF *************************
FUNCTION GetLocalHostName #DEFINE SOCKET_ERROR -1 LOCAL lcBuffer, lnResult lcBuffer = SPACE(250) lnResult = gethostname (@lcBuffer, Len(lcBuffer)) RETURN Iif(lnResult=0, SUBSTR(lcBuffer, 1,AT(Chr(0),lcBuffer)-1), "")
FUNCTION GetHostIP (lcHostname) #DEFINE HOSTENT_SIZE 16 LOCAL lcHOSTENTptr, lcHOSTENT, lnAddrlistPtr
lcHOSTENTptr = gethostbyname(lcHostname)
IF lcHOSTENTptr <> 0 lcHOSTENT = GetMemBuf (lcHOSTENTptr, HOSTENT_SIZE)
lnAddrlistPtr = buf2dword(SUBSTR(lcHOSTENT, 13,4)) RETURN GetIPfromHOSTENT (lnAddrlistPtr) ENDIF RETURN ""
PROCEDURE GetIPfromHOSTENT (lnAddrlistPtr) LOCAL lnDataAddress, lcResult lnDataAddress = buf2dword(GetMemBuf (lnAddrlistPtr, 4)) RETURN Iif(lnDataAddress <> 0, GetIPAddress(GetMemBuf(lnDataAddress, 4)), "")
FUNCTION GetIPAddress (lcAddrBuf) LOCAL lcResult, ii lcResult = "" FOR ii=1 TO 4 lcResult = lcResult +; LTRIM(STR(Asc(SUBSTR(lcAddrBuf, ii,1)))) +; Iif(ii=4, "",".") ENDFOR RETURN lcResult
FUNCTION InitWinsock() #DEFINE WSADATA_SIZE 398 #DEFINE WS_VERSION 514 LOCAL lcWSADATAln, lnInitResult lcWSADATA = Repli(Chr(0), WSADATA_SIZE) lnInitResult = WSAStartup (WS_VERSION, @lcWSADATA) RETURN (lnInitResult = 0)
FUNCTION GetMemBuf (lnAddr, lnBufsize) LOCAL lcBuffer lcBuffer = Repli(Chr(0), lnBufsize) = Heap2Str (@lcBuffer, lnAddr, lnBufsize) RETURN lcBuffer
FUNCTION buf2dword (lcBuffer) RETURN Asc(SUBSTR(lcBuffer, 1,1)) + ; Asc(SUBSTR(lcBuffer, 2,1)) * 256 +; Asc(SUBSTR(lcBuffer, 3,1)) * 65536 +; Asc(SUBSTR(lcBuffer, 4,1)) * 16777216
PROCEDURE decl DECLARE INTEGER WSAStartup IN ws2_32 INTEGER wVerRq, STRING @lpWSAData DECLARE INTEGER WSACleanup IN ws2_32 DECLARE INTEGER gethostbyname IN ws2_32 STRING hostname
DECLARE INTEGER gethostname IN ws2_32; STRING @name, INTEGER namelen
DECLARE RtlMoveMemory IN kernel32 As Heap2Str; STRING @Dest, INTEGER Src, INTEGER nLength
Pozdrawiam Kazimierz Pszenny http://jagasoftware.pl
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Zbigniew Grzelczak - 14-06-2006 02:58
Bardzo dziękuję za wyczerpującą odpowiedź. Mam co czytać.
Pozdrawiam
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
VFP 8 i problem z polskimi znakami przy otwieraniu dbf-a z dosowego Fox-a
probl.z komunikatem "Class definition WORD.APPLICATION is not found" w VFP 6
[VFP 8] tryb edycji formantu TextBox
[MySQL] i [VFP] Banalne - niebanalne zapytanie
transmisja plików za pomocą FTP w VFP 6
problem z zagnieżdżonym zapytaniem sql + VFP
[VFP] polskie znaki (Menu)
VFP 6 drukowanie tablicy w raporcie
[VFP 9] Cudzyslow w pliku txt
VFP9: petycja w sprawie VFP
zanotowane.pldoc.pisz.plpdf.pisz.plchinska-zupka.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|