powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / IP и MAC адрес ...
8 сообщений из 8, страница 1 из 1
IP и MAC адрес ...
    #32453422
Samir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно узнать IP и MAC адрес локального компа, на котором запушена фоксовская программа. Только без ActiveX
...
Рейтинг: 0 / 0
IP и MAC адрес ...
    #32454673
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAC:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
PROCEDURE GetMACAddress

Local pGUID,rGUID,lcOldError, lnResult
Declare integer CoCreateGuid in 'OLE32.dll' string @pguid
Declare integer StringFromGUID2 in 'OLE32.dll' ;
string rguid, string @lpsz, integer cchMax
Declare integer UuidCreateSequential in 'RPCRT4.dll' string @ Uuid

pGUID=replicate(chr( 0 ), 16 )
rGUID=replicate(chr( 0 ), 80 )

lcOldError = On('error')
On Error lnResult = CoCreateGuid(@pGUID)
lnResult = UuidCreateSequential(@pGUID) 
On Error &lcOldError

return substr( iif( lnResult =  0  and ;
	StringFromGUID2(pGUID,@rGUID, 40 ) #  0 , ;
    StrConv(left(rGUID, 76 ), 6 ), "" ),  26 , 12 )
EDPROC


IP 1:

Код: plaintext
1.
2.
ows = createobject( "mswinsock.winsock" )
? ows.LocalIP
release ows


IP 2:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
SET PROCEDURE TO GetIP.prg
oo = CREATEOBJECT( "GetIP" )
a = oo.GetLocalHostName()
b = oo.GetHostIP( a )
?  "Local Host:" , a
?  "Local IP:" , b

DEFINE CLASS GetIP AS CUSTOM

NAME =  "GetIP" 

PROCEDURE Init
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
ENDPROC

  Procedure GetLocalHostName
  *| -- returns the standard host name for the local machine
 
  #Define SOCKET_ERROR - 1 
  Local lcBuffer, lnResult, lpWSAData
********************************
  lpWSAData = Space( 512 )
  WSAStartup(0x0101,@lpWSAData)
********************************
  lcBuffer = Space( 250 )
  lnResult = gethostname (@lcBuffer, Len(lcBuffer))
  Return Iif(lnResult= 0 , Substr(lcBuffer,  1 ,At(Chr( 0 ),lcBuffer)- 1 ),  "")
Endproc

FUNCTION GetHostIP (lcHostname)
#DEFINE HOSTENT_SIZE 16 
LOCAL lcHOSTENTptr, lcHOSTENT, lnAddrlistPtr

*| -- address for the HOSTENT structure
 
lcHOSTENTptr = gethostbyname(lcHostname)

IF lcHOSTENTptr <>  0  
lcHOSTENT = This.GetMemBuf( lcHOSTENTptr, HOSTENT_SIZE )
*| -- a pointer to a null-terminated list of addresses
 
lnAddrlistPtr = This.buf2dword(SUBSTR(lcHOSTENT,  13 , 4 ))
RETURN This.GetIPfromHOSTENT(lnAddrlistPtr)
ENDIF
RETURN " "
ENDPROC


PROCEDURE GetIPfromHOSTENT (lnAddrlistPtr)
*|-- retrieving IP address from the HOSTENT structure
 
LOCAL lnDataAddress, lcResult
lnDataAddress = This.buf2dword( This.GetMemBuf( lnAddrlistPtr,  4  ) )
RETURN IIF( lnDataAddress <>  0 , This.GetIPAddress( This.GetMemBuf( lnDataAddress,  4  ) ), " " )
ENDPROC

FUNCTION GetIPAddress (lcAddrBuf)
*|-- converts 4-characters string buffer
 
*| -- to the IP address string representation
 
LOCAL lcResult, ii
lcResult = " "
FOR ii=1  TO  4 
lcResult = lcResult +;
LTRIM(STR(Asc(SUBSTR(lcAddrBuf, ii, 1 )))) +;
Iif(ii= 4 , " "," .")
ENDFOR
RETURN lcResult
ENDPROC

PROCEDURE 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 
ENDPROC

PROCEDURE GetMemBuf (lnAddr, lnBufsize)
LOCAL lcBuffer
lcBuffer = REPLICATE(Chr( 0 ), lnBufsize)
Heap2Str( @lcBuffer, lnAddr, lnBufsize )
RETURN lcBuffer
ENDPROC


ENDDEFINE 



P.S. I could find it on http: http://www.universalthread.com
...
Рейтинг: 0 / 0
IP и MAC адрес ...
    #32454844
Samir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Огромное спасибо!
...
Рейтинг: 0 / 0
IP и MAC адрес ...
    #32455257
Samir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот небольшая проблемка.

На Win98 все это не работает
Можно что нибудь придумать?
...
Рейтинг: 0 / 0
IP и MAC адрес ...
    #32455262
Samir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь... Определение MAC адреса работает, не работает определение IP адреса
...
Рейтинг: 0 / 0
IP и MAC адрес ...
    #32455843
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой не работет IP1 или IP2 ?
...
Рейтинг: 0 / 0
IP и MAC адрес ...
    #32456165
Samir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IP1 - ошибка: - Class definition MSWINSOCK.WINSOCK is not found.
заставить установить компонент я их не могу

IP2 - просто выдает пустую строку независимо от системы, причину пока не нашел, надо идти тестировать на клиентских компах. На моих компах все работает.

По моему не работает на системах Win98 и WinXPpro
...
Рейтинг: 0 / 0
IP и MAC адрес ...
    #32456251
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IP1 точно работает на W2k и WinXP professional - проверял, работает точно. К сожалению Win 98 у меня нигде под рукой нет. Но что-то я слышал, что там эта библиотека как-то странно устанавливалась, давно это было ...

IP2 только что проверил - работает отлично на W2K professional...

Странно все это :(
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / IP и MAC адрес ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]