On-line: Andrey, MIKHAIL, гостей 1. Всего: 3 [подробнее..]
АвторСообщение
Администратор




Пост N: 341
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 18.10.06 15:08. Заголовок: Серийный номер


Как средствами winapi считать Mac-адрес сетевушки, серийный номер диска или еще что-нибудь подобное понятно для каких целей

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 35 , стр: 1 2 All [только новые]


модератор




Пост N: 316
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 18.10.06 15:41. Заголовок: Предупреждение: НЕ испытано в полевых условиях



MAC адрес можно определить так (должно работать под Винды и Unix):

#include "hbapi.h"
#include <stdio.h>

#if defined(HB_OS_UNIX)

#include <unistd.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <linux/if.h>

#elif defined(HB_OS_WIN_32)

#include <windows.h>
#include <wincon.h>
#include <time.h>

#endif

#define LEN_MACA_STR 12

long mac_addr_sys ( u_char *cResult );

HB_FUNC( GETMACADDR )
{
long iResult ;
u_char cResult[LEN_MACA_STR+1];

iResult = mac_addr_sys( cResult );

if ( iResult == 0 ) {
hb_retclen( cResult, LEN_MACA_STR );
}
else {
hb_retc( "" );
}
}

#if defined(HB_OS_WIN_32)

typedef struct _ASTAT_
{

ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff [30];

} ASTAT, * PASTAT;

ASTAT Adapter;

#endif

long mac_addr_sys ( u_char *cResult )
{

#if defined(HB_OS_UNIX)

struct ifreq ifr ;
struct ifreq *IFR;
struct ifconf ifc;
char buf[1024];
int s, i;
int iFound = 0;

s = socket(AF_INET, SOCK_DGRAM, 0);

if (s==-1) {
return -1;
}

ifc.ifc_len = sizeof(buf);
ifc.ifc_buf = buf;
ioctl(s, SIOCGIFCONF, &ifc);

IFR = ifc.ifc_req;

for (i = ifc.ifc_len / sizeof(struct ifreq); --i >= 0; IFR++) {

strcpy(ifr.ifr_name, IFR->ifr_name);
if (ioctl(s, SIOCGIFFLAGS, &ifr) == 0) {
if (! (ifr.ifr_flags & IFF_LOOPBACK)) {
if (ioctl(s, SIOCGIFHWADDR, &ifr) == 0) {
iFound = 1;
break;
}
}
}
}

close(s);

if (iFound) {
for (i=0;i<6;++i) {
sprintf( cResult+(i*2), "%2.2x", ifr.ifr_hwaddr.sa_data );
}
}
else {
return -1;
}
return 0;

}

#elif defined(HB_OS_WIN_32)

NCB Ncb;
UCHAR cRetCode;
char NetName[50];
LANA_ENUM lenum;
int i;

memset( &Ncb, 0, sizeof(Ncb) );
Ncb.ncb_command = NCBENUM;
Ncb.ncb_buffer = (UCHAR *)&lenum;
Ncb.ncb_length = sizeof(lenum);
cRetCode = Netbios( &Ncb );

if ( lenum.length < 1 ) {
return -1;
}

memset( &Ncb, 0, sizeof(Ncb) );
Ncb.ncb_command = NCBRESET;
Ncb.ncb_lana_num = lenum.lana[0];

cRetCode = Netbios( &Ncb );

memset( &Ncb, 0, sizeof (Ncb) );
Ncb.ncb_command = NCBASTAT;
Ncb.ncb_lana_num = lenum.lana[0];

strcpy( Ncb.ncb_callname, "* " );
Ncb.ncb_buffer = (char *) &Adapter;
Ncb.ncb_length = sizeof(Adapter);

cRetCode = Netbios( &Ncb );

if ( cRetCode == 0 ) {
for (i=0;i<6;++i) {
sprintf( cResult+(i*2), "%02x", Adapter.adapt.adapter_address );
}
return 0;
}

return -1;

}

#else

return -1;
}

#endif


С серийным номером диска еще проще:

*--------------------------------------
Function GetVolumeSerialNumber(cPath)
*--------------------------------------
Private nSerialNumber,cFatName:=space(30),nFlag
GetVolumeInformation(cPath,NIL,nSerialNumber,NIL,56,nFlag,cFATName )
Return abs(nSerialNumber)


#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"

HB_FUNC( GETVOLUMEINFORMATION )
{
char *VolumeNameBuffer = (char *) hb_xgrab( MAX_PATH ) ;
DWORD VolumeSerialNumber ;
DWORD MaximumComponentLength ;
DWORD FileSystemFlags ;
char *FileSystemNameBuffer = (char *) hb_xgrab( MAX_PATH ) ;
BOOL bRet;

bRet = GetVolumeInformation( ISNIL(1) ? NULL : (LPCTSTR) hb_parc(1) ,
(LPTSTR) VolumeNameBuffer ,
MAX_PATH ,
&VolumeSerialNumber ,
&MaximumComponentLength ,
&FileSystemFlags ,
(LPTSTR)FileSystemNameBuffer ,
MAX_PATH ) ;
if ( bRet )
{
if ( ISBYREF( 2 ) ) hb_storc ((char *) VolumeNameBuffer, 2 ) ;
if ( ISBYREF( 3 ) ) hb_stornl( (LONG) VolumeSerialNumber, 3 ) ;
if ( ISBYREF( 4 ) ) hb_stornl( (LONG) MaximumComponentLength, 4 ) ;
if ( ISBYREF( 5 ) ) hb_stornl( (LONG) FileSystemFlags, 5 );
if ( ISBYREF( 6 ) ) hb_storc ((char *) FileSystemNameBuffer, 6 );
}

hb_retl(bRet);
hb_xfree( VolumeNameBuffer );
hb_xfree( FileSystemNameBuffer );
}

#pragma ENDDUMP


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 399
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.10.06 16:15. Заголовок: Re:


Так до кучи.
Немного похожая тема вот тут терлась
http://fivetechsoft.com/forums/viewtopic.php?t=4412


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 342
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 18.10.06 17:14. Заголовок: Re:


Спасибо, то что надо

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1341
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.06.10 17:14. Заголовок: gfilatov пишет: С с..


gfilatov пишет:

 цитата:
С серийным номером диска еще проще:
*--------------------------------------
Function GetVolumeSerialNumber(cPath)
*--------------------------------------
Private nSerialNumber,cFatName:=space(30),nFlag
GetVolumeInformation(cPath,NIL,nSerialNumber,NIL,56,nFlag,cFATName )
Return abs(nSerialNumber)
........
И Т.Д.



Не работает что-то ?
Compiling...
Z:\xHarbour\bin\harbour hdd-serial.prg -n -q0 -gc -iZ:\xHarbour\include -p -w
hdd-serial.prg(14) Warning W0001 Ambiguous reference: 'CFATNAME'
hdd-serial.prg(15) Warning W0001 Ambiguous reference: 'NSERIALNUMBER'
hdd-serial.prg(15) Warning W0001 Ambiguous reference: 'NFLAG'
hdd-serial.prg(15) Warning W0001 Ambiguous reference: 'CFATNAME'
hdd-serial.prg(16) Warning W0001 Ambiguous reference: 'NSERIALNUMBER'
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
hdd-serial.c:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland

W:\FOND9\UTIL\HDD>hdd-serial.exe

Error BASE/1089 Argument error: ABS Arguments: ( [ 1] = Type: U)

Error at ...: ABS(0) in Module:
Called from : GETVOLUMESERIALNUMBER(16) in Module: hdd-serial.prg
Called from : MAIN(4) in Module: hdd-serial.prg


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1720
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.06.10 17:25. Заголовок: Andrey Volserial из..


Andrey
Volserial из CT покажет тебе ту же инфу.

Спасибо: 1 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1349
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.06.10 17:28. Заголовок: А как определить тип..


А как определить тип процессора ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1727
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.06.10 17:54. Заголовок: Andrey Посмотри при..


Andrey
Посмотри пример в MiniGui SAMPLES\ADVANCED\SYSINFO\
У меня Минигуи старый , аж 2004 года , возможно с тех пор появились и новые примеры в
этом плане.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1350
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.06.10 18:20. Заголовок: Точно, нашел такой. ..


Точно, нашел такой.

Но так как пишу на хХарборе без ГУИ, то выдрал оттуда нужные мне функции.

Пример здесь: Скрытый текст


Пришлось прицепить библиотеку cputype.lib для функции GetCPU()

А дальше облом, нужен класс TReg32(), нашел в h_registry.prg, опять прицепил к проекту.
Еще больше ошибок....
Error: Unresolved external '_HB_FUN_REGCLOSEKEY' referenced from W:\UTIL\
Error: Unresolved external '_HB_FUN_REGOPENKEYEXA' referenced from W:\UTI
Error: Unresolved external '_HB_FUN_MSGSTOP' referenced from W:\UTIL\CPU\
Error: Unresolved external '_HB_FUN_REGCREATEKEY' referenced from W:\UTIL
Error: Unresolved external '_HB_FUN_REGQUERYVALUEEXA' referenced from W:\
Error: Unresolved external '_HB_FUN_REGSETVALUEEXA' referenced from W:\UT
Error: Unresolved external '_HB_FUN_REGDELETEVALUEA' referenced from W:\U
Error: Unresolved external '_HB_FUN_REGDELETEKEY' referenced from W:\UTIL

Блин, нельзя ли укоротить ВСЕ ЭТО хозяйство под хХарбор ????
Кто поможет ???

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 965
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 06.06.10 18:44. Заголовок: Andrey пишет: Блин,..


Andrey пишет:

 цитата:
Блин, нельзя ли укоротить ВСЕ ЭТО хозяйство под хХарбор ???? Кто поможет ???


Помогите себе сами, попробуйте узнать о хХарбор больше, чем вы знаете
#define HKEY_LOCAL_MACHINE 0  

proc main

? GetRegistry( HKEY_LOCAL_MACHINE, "HARDWARE\DESCRIPTION\System\CentralProcessor\0", "ProcessorNameString" )

return


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1351
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.06.10 18:45. Заголовок: Сделал тест под хХар..


Сделал тест под хХарбор. Исходники здесь http://slil.ru/29281289

Вопрос остается прежним: Как укоротить ВСЕ ЭТО хозяйство под хХарбор ???



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1728
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.06.10 21:34. Заголовок: Andrey пишет: Как у..


Andrey пишет:

 цитата:
Как укоротить ВСЕ ЭТО хозяйство под хХарбор ???



Петр пишет:

 цитата:
#define HKEY_LOCAL_MACHINE 0

proc main

? GetRegistry( HKEY_LOCAL_MACHINE, "HARDWARE\DESCRIPTION\System\CentralProcessor\0", "ProcessorNameString" )

return


Читал ответ Петра ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1352
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.06.10 21:39. Заголовок: Петр пишет: Помогит..


Петр пишет:

 цитата:
Помогите себе сами, попробуйте узнать о хХарбор больше, чем вы знаете



Спасибо Петр ! Направление понял.

Только что-то сайт под тормаживает, тема Петра получилась выше, т.е. перед тем как я пример последний записывал.
И поэтому сразу не заметил ответ. Благо Дима подсказал.... Ну что без него мы делали бы...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1353
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.06.10 21:45. Заголовок: Сделал укороченный п..


Сделал укороченный пример но только для NT и выше:
Скрытый текст


Может кому пригодиться ....
Спасибо всем за помощь .....

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1731
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.06.10 22:07. Заголовок: Andrey пишет: И поэ..


Andrey пишет:

 цитата:
И поэтому сразу не заметил ответ


Для этого есть Темы с новыми сообщениями

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1380
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.06.10 13:25. Заголовок: Сделал укороченный п..


Сделал укороченный пример но только для NT и выше:
Скрытый текст


Оказывается работает, только под ХР !!!
А под Win2000 - вылетает !

Где ошибка ? Может разные ветки реестра ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1762
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.06.10 13:35. Заголовок: Andrey пишет: Где о..


Andrey пишет:

 цитата:
Где ошибка ? Может разные ветки реестра ?


Тут написано для каких осей
http://msdn.microsoft.com/ru-ru/library/system.security.permissions.registrypermission%28VS.90%29.aspx<\/u><\/a>

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1763
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.06.10 13:40. Заголовок: Andrey пишет: А под..


Andrey пишет:

 цитата:
А под Win2000 - вылетает !



Варианты:
1. Проверь ручками наличие этого ключа
2. Не достаточно прав , заюзай логин админа ;)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1381
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.06.10 16:08. Заголовок: Dima пишет: Вариант..


Dima пишет:

 цитата:
Варианты:
1. Проверь ручками наличие этого ключа
2. Не достаточно прав , заюзай логин админа ;)



Нету под руками Win2000. Ошибку мне прислали из другого города.
Эмулятор 2000 на ноутбуке не встанет, да и дорого сейчас тянуть дистрибутив. Трафик дорогой.

А что делать если у юзера нет прав для чтения ключа ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1765
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.06.10 16:31. Заголовок: Andrey Проверь сам ..


Andrey
Проверь сам ;)
Есть отличная прога TeamViewer. Ставишь ее у себя и даешь клиенту , клиент сообщает
тебе номер компа и пароль , забиваешь в TeamViewer его данные и ты уже на его компе.
Дистрибутив не требующий инсталляции налить куда то ?


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1382
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.06.10 18:33. Заголовок: Dima пишет: Есть от..


Dima пишет:

 цитата:
Есть отличная прога TeamViewer


Спасибо Дима ! Попробую !

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1769
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.06.10 18:56. Заголовок: Andrey Налил сюда h..

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1384
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.06.10 22:08. Заголовок: Уже понравилось !!! ..


Уже понравилось !!!
И как это раньше, без нее то жили ?

А как ты смотришь компы в сетке ?
Или ее (TeamViewer) на проблемном компе нужно запускать ?


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1770
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.06.10 22:17. Заголовок: Andrey пишет: Или е..


Andrey пишет:

 цитата:
Или ее (TeamViewer) на проблемном компе нужно запускать ?


Именно .
Поюзай с кем то , там все очевидно и просто.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 174
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 27.06.10 13:36. Заголовок: Особенно не обольщае..


Особенно не обольщаетесь. При интенсивном использовании TeamViewer вы получите предупреждение, о том что возможно комерческое использование программы и отключение.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1773
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.06.10 14:14. Заголовок: Vlad04 я юзаю ее го..


Vlad04
я юзаю ее год , но аккуратно , пока все работает отлично.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2904
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.03.13 12:38. Заголовок: Помогите код причеса..


Помогите код причесать. Не собирается прога. 3 ошибки вида Mixing pointers to different 'char' types
 
#include <Windows.h>
#include <Iphlpapi.h>
#include <Assert.h>
#include "hbapi.h"
#include "hbapiitm.h"
HB_FUNC(GETMACADDRESS)
{
IP_ADAPTER_INFO AdapterInfo[16]; // Allocate information for up to 16 NICs

DWORD dwBufLen = sizeof(AdapterInfo); // Save the memory size of buffer

unsigned char ret[ 20 ] ={0};

DWORD dwStatus = GetAdaptersInfo( // Call GetAdapterInfo
AdapterInfo, // [out] buffer to receive data
&dwBufLen); // [in] size of receive data buffer
PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;// Contains pointer to current adapter info

assert(dwStatus == ERROR_SUCCESS); // Verify return value is valid, no buffer overflow




sprintf(ret,"%02X-%02X-%02X-%02X-%02X-%02X",
pAdapterInfo->Address[0], pAdapterInfo->Address[1],
pAdapterInfo->Address[2], pAdapterInfo->Address[3],
pAdapterInfo->Address[4], pAdapterInfo->Address[5]);
hb_retc(ret);
}


HB_FUNC(GETALLMACADDRESS)
{
IP_ADAPTER_INFO AdapterInfo[16]; // Allocate information for up to 16 NICs

DWORD dwBufLen = sizeof(AdapterInfo); // Save the memory size of buffer

unsigned char ret[ 20 ] ={0};
PHB_ITEM pArray;
PHB_ITEM pItem;

DWORD dwStatus = GetAdaptersInfo( // Call GetAdapterInfo
AdapterInfo, // [out] buffer to receive data
&dwBufLen); // [in] size of receive data buffer
PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;// Contains pointer to current adapter info

pArray = hb_itemNew( NULL );
hb_arrayNew( pArray, 0 );

assert(dwStatus == ERROR_SUCCESS); // Verify return value is valid, no buffer overflow


do
{
sprintf(ret,"%02X-%02X-%02X-%02X-%02X-%02X", pAdapterInfo->Address[0],
pAdapterInfo->Address[1], pAdapterInfo->Address[2],
pAdapterInfo->Address[3], pAdapterInfo->Address[4],
pAdapterInfo->Address[5]);
pItem = hb_itemPutC( NULL, ( char * ) ret );
hb_arrayAddForward( pArray, pItem );
hb_itemRelease( pItem ) ;


pAdapterInfo = pAdapterInfo->Next; // Progress through linked list
}
while(pAdapterInfo); // Terminate if last adapter

hb_itemReturnForward( pArray );
hb_itemRelease( pArray );
}





Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2813
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.03.13 16:09. Заголовок: Да можно и не причес..


Да можно и не причесывать, код рабочий, там только предупреждения.
Чтобы их убрать, достаточно заменить:

unsigned char ret[ 20 ] ={0};

на

char ret[ 20 ] ={0};


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2905
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.03.13 16:22. Заголовок: Pasha Да так зарабо..


Pasha
Да так заработало , спасибо.

ЗЫ
Через реестр определять MAC если больше одной сетевой голый номер

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2906
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.03.13 17:02. Заголовок: А какой функцией мож..


А какой функцией можно узнать букву системного диска ?

PS
Проехали GetEnv("SYSTEMDRIVE")

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4550
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.02.15 14:25. Заголовок: Dima пишет: HB_FUNC..


Dima пишет:

 цитата:
HB_FUNC(GETMACADDRESS)


Ранее все собиралось норм под MingW gcc.exe (GCC) 4.7.2
Обновил версию MinGW gcc.exe (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 4.8.4
Собираться перестало . Валит ошибка netioapi.h:108:3: error: unknown type name 'ADDRESS_FAMILY'
Чего делать ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1178
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 27.02.15 20:44. Заголовок: 2014-01-14 23:36 UTC..


2014-01-14 23:36 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/hbsocket.c
+ added support for returning NIC MAC address by hb_socketGetIFaces()
in MS-Windows builds.
To see physical device addresses bound with active IP interfaces use:

#include "hbsocket.ch"
PROCEDURE Main()
LOCAL aIFace
FOR EACH aIFace IN hb_socketGetIFaces( , .t. )
? "IP:", aIFace[ HB_SOCKET_IFINFO_ADDR ], ;
" MAC:", aIFace[ HB_SOCKET_IFINFO_HWADDR ]
NEXT
WAIT
RETURN

Не прокатит?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4553
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.02.15 21:16. Заголовок: Петр пишет: Не прок..


Петр пишет:

 цитата:
Не прокатит?


Нет , пробовал уже.
GETMACADDRESS выдаст 1 MAC адрес в случае с hb_socketGetIFaces( , .t. ) кучу , как и GETALLMACADDRESS

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4554
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.02.15 22:27. Заголовок: Возможно так , но на..


Возможно так , но надо тестить. У меня работает.
 
Proc main
? MY_GETMACADDRESS()
return
**************************

Func MY_GETMACADDRESS()
#include "hbsocket.ch"
local ret:=""
local aIFace
FOR EACH aIFace IN hb_socketGetIFaces()
*? aIFace[ HB_SOCKET_IFINFO_ADDR ]
*? aIFace[HB_SOCKET_IFINFO_HWADDR]
*? aIFace[HB_SOCKET_IFINFO_FAMILY]
*? aIFace[HB_SOCKET_IFINFO_FLAGS]
*? aIFace[HB_SOCKET_IFINFO_NETMASK]
*? aIFace[HB_SOCKET_IFINFO_BROADCAST]
*? aIFace[HB_SOCKET_IFINFO_P2PADDR]
*? "---------------------------------"
if aIFace[HB_SOCKET_IFINFO_FLAGS]==19 // .and. aIFace[HB_SOCKET_IFINFO_P2PADDR]==nil // на всяк случай было
ret:=aIFace[ HB_SOCKET_IFINFO_HWADDR ]
endif
NEXT
return ret



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4555
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.02.15 23:17. Заголовок: Проверил на 5 машина..


Проверил на 5 машинах в сети , все чётко.
Окончательный вариант вероятно такой.
 
Proc main
? MY_GETMACADDRESS()
wait
return
**************************

Func MY_GETMACADDRESS()
#include "hbsocket.ch"
local ret:=""
local aIFace
FOR EACH aIFace IN hb_socketGetIFaces()
if aIFace[HB_SOCKET_IFINFO_FLAGS]==19
ret:=aIFace[ HB_SOCKET_IFINFO_HWADDR ]
exit
endif
NEXT
return charrepl(":",ret,"-") // charrepl что бы возврат совпал с предыдущей функцией определения MAC





Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1179
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 28.02.15 13:20. Заголовок: Dima пишет: Нет Во..


Dima пишет:

 цитата:
Нет



 цитата:
Возможно так



 цитата:
все чётко




Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 35 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 108
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет