Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
9 / 9 / 4
Регистрация: 27.01.2013
Сообщений: 451

Сменить статический IP адрес

26.04.2021, 02:33. Показов 713. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Ищу способ, как через WINAPI изменить IP-адрес, маску подсети, DNS.
Если несколько сетевых карт, надо программно выбрать и поменять параметры.

Нашёл функцию, но как её применять, так и не понял.

Visual Basic
1
Public Declare Function AddIPAddress Lib "IPHLPAPI.DLL" (ByRef Address As Any, ByRef IpMask As Any, ByVal IfIndex As Long, ByRef NTEContext As Long, ByRef NTEInstance As Long) As Long
Нашёл ряд примеров смены IP через реестр и через командную строку, но это не то.
Я так понимаю, если на API можно получить IP, то и изменить также можно.
Подскажите, пожалуйста.
В интернете не смог найти решения и внятных примеров.


Пример определения IP:

Форма:

Visual Basic
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
Public Sub Start()
Dim Ret As Long, Tel As Long
Dim bBytes() As Byte
Dim Listing As MIB_IPADDRTABLE
 
Form1.Text1 = ""
 
On Error GoTo END1
   GetIpAddrTable ByVal 0&, Ret, True
 
   If Ret <= 0 Then Exit Sub
   ReDim bBytes(0 To Ret - 1) As Byte
   'retrieve the data
   GetIpAddrTable bBytes(0), Ret, False
 
   'Get the first 4 bytes to get the entry's.. ip installed
   CopyMemory Listing.dEntrys, bBytes(0), 4
   'MsgBox "IP's found : " & Listing.dEntrys    => Founded ip installed on your PC..
   Form1.Text1 = Listing.dEntrys & "   IP addresses found on your PC !!" & vbCrLf
   Form1.Text1 = Form1.Text1 & "----------------------------------------" & vbCrLf
   For Tel = 0 To Listing.dEntrys - 1
       'Copy whole structure to Listing..
      ' MsgBox bBytes(tel) & "."
       CopyMemory Listing.mIPInfo(Tel), bBytes(4 + (Tel * Len(Listing.mIPInfo(0)))), Len(Listing.mIPInfo(Tel))
        Form1.Text1 = Form1.Text1 & "IP address                   : " & ConvertAddressToString(Listing.mIPInfo(Tel).dwAddr) & vbCrLf
        Form1.Text1 = Form1.Text1 & "IP Subnetmask            : " & ConvertAddressToString(Listing.mIPInfo(Tel).dwMask) & vbCrLf
        Form1.Text1 = Form1.Text1 & "BroadCast IP address  : " & ConvertAddressToString(Listing.mIPInfo(Tel).dwBCastAddr) & vbCrLf
        Form1.Text1 = Form1.Text1 & "**************************************" & vbCrLf
   Next
 
'MsgBox ConvertAddressToString(Listing.mIPInfo(1).dwAddr)
Exit Sub
END1:
MsgBox "ERROR"
End Sub
 
Private Sub Form_Load()
 
 
Start
 
End Sub
Модуль:

Visual Basic
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
Const MAX_IP = 5   'To make a buffer... i dont think you have more than 5 ip on your pc..
 
Type IPINFO
    dwAddr As Long   ' IP address
   dwIndex As Long '  interface index
   dwMask As Long ' subnet mask
   dwBCastAddr As Long ' broadcast address
   dwReasmSize  As Long ' assembly size
   unused1 As Integer ' not currently used
   unused2 As Integer '; not currently used
End Type
 
Type MIB_IPADDRTABLE
   dEntrys As Long   'number of entries in the table
   mIPInfo(MAX_IP) As IPINFO  'array of IP address entries
End Type
 
Type IP_Array
   mBuffer As MIB_IPADDRTABLE
   BufferLen As Long
End Type
 
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Declare Function GetIpAddrTable Lib "IPHlpApi" (pIPAdrTable As Byte, pdwSize As Long, ByVal Sort As Long) As Long
 
 
Public Declare Function AddIPAddress Lib "IPHLPAPI.DLL" (ByRef Address As Any, ByRef IpMask As Any, ByVal IfIndex As Long, ByRef NTEContext As Long, ByRef NTEInstance As Long) As Long
 
 
'converts a Long  to a string
Public Function ConvertAddressToString(longAddr As Long) As String
   Dim myByte(3) As Byte
   Dim Cnt As Long
   CopyMemory myByte(0), longAddr, 4
   For Cnt = 0 To 3
       ConvertAddressToString = ConvertAddressToString + CStr(myByte(Cnt)) + "."
   Next Cnt
   ConvertAddressToString = Left$(ConvertAddressToString, Len(ConvertAddressToString) - 1)
End Function
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.04.2021, 02:33
Ответы с готовыми решениями:

Как скопировать структуру или сменить указатель новой переменной на ее адрес
Здравствуйте! У меня есть структура вида: type Struct_inside a as long b as long end type type Struct_main

Частный адрес, динамический адрес, статический адрес - какой у меня?
Привет. Открываем рубрику глупых вопросов. Я сижу с компьютера который подключен к интернету по кабелю, кабель от компьютера идёт к...

Статический адрес
Здравствуйте! Подскажите пожалуйста! У меня значит стоит DIR-320. Подключен я к Ростелекому. Позвонил я туда, дали мне статический...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.04.2021, 02:33
Помогаю со студенческими работами здесь

VPN Windows 10 - Статический адрес
Как в Windows 10 на vpn задать статический ip? под админом в свойства ipv4 vpn-а не заходит, в rasphone.pbk поставил нужный, но как я понял...

Dir 320. Статический адрес
Здравствуйте! Подскажите пожалуйста! У меня значит стоит DIR-320. Подключен я к Ростелекому. Позвонил я туда, дали мне статический...

Установить статический адрес у компа
У меня есть роутер ZyXel. К нему подключён модем Йота для выхода в Интернет. Адрес роутера 192.168.1.1. Хочу сделать адрес компа...

Настроить статический ip-адрес на raspberry
Доброго утра =) Хочу настроить статический ip. Происходит это достаточно стандартно, насколько я знаю. Настраиваю как описано...

Класс адрес: статический метод
Помогите динамический метод (public void Metod (double a)) сделать статическим, если пишу public static Metod (double a), то жалуется на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru