Witajcie,
zaczynam swoją przygodę z Visualem. Mam pytanie, jak mogę w MessageBoxie wyświetlić swój lokalny adres IP ? Głównie, chodzi o to jak go pobrać do zmiennej, muszę użyć jakiejś kontrolki ?
Wersja visuala to Visual c++ 2010 Express.
Witajcie,
zaczynam swoją przygodę z Visualem. Mam pytanie, jak mogę w MessageBoxie wyświetlić swój lokalny adres IP ? Głównie, chodzi o to jak go pobrać do zmiennej, muszę użyć jakiejś kontrolki ?
Wersja visuala to Visual c++ 2010 Express.
Tak, musisz użyć kontrolki rozum.
http://msdn.microsoft.com/en-us/library/s128tyf6
Musisz skorzystać z klasy NetworkInterface, reprezentuje ona interfejs sieciowy zainstalowany w komputerze (to co widać na liście "Połączenia sieciowe").
NetworkInterface::GetAllNetworkInterfaces zwraca listę wszystkich interfejsów.
Masz tu kod w Asemblerze, przepisz sobie na C++ :)
.386
.model flat, stdcall
option casemap:none
include windows.inc
include kernel32.inc
include user32.inc
include ws2_32.inc
includelib user32.lib
includelib kernel32.lib
includelib ws2_32.lib
.data
wsaData WSADATA <>;
P hostent <>;
HostName db 128 dup(0);
szCaption db "Twój adres IP",0
.data?
.code
start:
; Inicjacja Winsock
invoke WSAStartup, 0101h, addr wsaData
; Pobierz nazwę hosta
invoke gethostname, HostName, 128
; Pobierz strukturę hostent z nazwy hosta
invoke gethostbyname, addr HostName
mov ebx, eax
; EBX aktualnie wskazuje strukturę hostent
assume ebx: ptr hostent
mov eax, [ebx].h_list
assume ebx: nothing
; EBX aktualnie wskazuje na listę adresów IP
mov ebx, eax
mov eax, [ebx]
; Pobierz adres IP z wskaźnika na adres IP
mov eax, [eax]
; Zamień adres IP na tekst
invoke inet_ntoa, eax
invoke MessageBox, 0, eax, addr szCaption, 0
invoke ExitProcess,NULL
end start