Форум » GUI » Серийный номер » Ответить

Серийный номер

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

Ответов - 35, стр: 1 2 All

Dima: Andrey Налил сюда http://files.mail.ru/EK7YGI ЗЫ Уверен тебе понравится. Клиент у меня есть в другом городе , сетка у них порядка 50 компов , так вот по звонку на мобилу я могу посмотреть любой из проблемных компов в сети и сделать что нужно. Главное что бы инет был (+TeamViewer) а где будет комп находится не важно. Если есть желание потестить кидай в личку номер своего компа и пароль (TeamViewer должен быть запущен) НЯМ ;) Пароль лучше сделать постоянным и подлиннннеееее !!!!!!

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

Dima: Andrey пишет: Или ее (TeamViewer) на проблемном компе нужно запускать ? Именно . Поюзай с кем то , там все очевидно и просто.


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

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

Dima: Помогите код причесать. Не собирается прога. 3 ошибки вида Mixing pointers to different 'char' types [pre2] #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 ); } [/pre2]

Pasha: Да можно и не причесывать, код рабочий, там только предупреждения. Чтобы их убрать, достаточно заменить: unsigned char ret[ 20 ] ={0}; на char ret[ 20 ] ={0};

Dima: Pasha Да так заработало , спасибо. ЗЫ Через реестр определять MAC если больше одной сетевой голый номер

Dima: А какой функцией можно узнать букву системного диска ? PS Проехали GetEnv("SYSTEMDRIVE")

Dima: 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' Чего делать ?

Петр: 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 Не прокатит?

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

Dima: Возможно так , но надо тестить. У меня работает. [pre2] 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 [/pre2]

Dima: Проверил на 5 машинах в сети , все чётко. Окончательный вариант вероятно такой. [pre2] 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 [/pre2]

Петр: Dima пишет: Нет Возможно так все чётко



полная версия страницы