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

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

26.04.2021, 02:33. Показов 733. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru