Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как программно установить IP-адрес, присвоение IP-адреса 
:(
    Опции темы
AndreySoft
Дата 21.10.2003, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.10.2003
Где: Железногорск

Репутация: нет
Всего: нет



ну т.е. не в ручную, в настройках, а чтобы прога присвоила компу IP-адрес, маску, шлюз, днс-сервер... ну допустим из Label.Caption
Если можно помогите кодом... или хотя бы где это можно найти.
Заранее, огромное спасибо!
PM MAIL WWW ICQ   Вверх
dvs
Дата 22.10.2003, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Владимир Драпалюк
**


Профиль
Группа: Участник Клуба
Сообщений: 660
Регистрация: 25.8.2003
Где: Воронеж->Москв а

Репутация: нет
Всего: 19



Ну лучше, наверное, из Edit.Text.


--------------------
Любите друг друга!
PM MAIL WWW ICQ   Вверх
AndreySoft
Дата 22.10.2003, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.10.2003
Где: Железногорск

Репутация: нет
Всего: нет



Да хоть из Edit, принцип не в этом заключается.
Я про то, как запихнуть этот IP программно.
PM MAIL WWW ICQ   Вверх
Pakshin A. S.
Дата 22.10.2003, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Есть функция получения IP-адреса, может поможет...

Код


function my_ip_adress: longint;
const
 bufsize = 255;
var
 buf: pointer;
 RemoteHost: PHostEnt;
begin
 buf:=nil
 try
   GetMem(buf, bufsize);
   RemoteHost:=WinSock.HetHostName(buf, bufsize);
   if RemoteHost = nil then
     Result:=WinSock.htonl($07000001)
   else
     Result:=longint(pointer(RemoteHost^.h_addr_list^)^);
 finally
   if buf <> nil then
     FreeMem(buf, bufsize);
 end;
 Result:=WinSock.nyohl(Result);
end;



P. S. Как я понял, IP узнаётся по адресу. Значит на этот адрес можно послать новый IP! Но я могу ошибаться...
PM   Вверх
p0s0l
Дата 22.10.2003, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Цитата
Change IP address and HostName of NT machine

This article was contributed by Massimo Negroni .

Environment: NT4 SP5

How to set local machine IP addresses from your program ?

Follow this steps :

1. Open registry on the HKEY_LOCAL_MACHINE

2. Find the subKey = SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\"netcard# "

"netcard# " usually is "1" but you can control any subkey and find specific netwrok Adapters

Refer to "MSDN Registry Entries for Network Adapter Cards"

3. Get data for the value "ServiceName"

4. Find the subKey = SYSTEM\CurrentControlSet\Services\"ServiceName"\Parameters\TcpIp"

5. Set data for the value "IpAddress" to change IP address

6. Set data for the value "SubnetMask" to change subnet mask

7. Set data for the value "DefaultGateway" to change default gateway

8. Reboot your PC.


How to set local machine HostName from your program ?

Follow this steps :

1. Open registry on the HKEY_LOCAL_MACHINE

2. Find the subKey = SYSTEM\CurrentControlSet\Services\TcpIp\Parameters

3. Set data for the value "HostName"

4. Find the subKey = SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName

5. Set data for the value "ComputerName"

6. Reboot your PC and HostName will be set.


WARNING: Modify registry incorrect can cause serious, system-wide problems . Use this at your own risk

Где-то была тема в разделе C про это. Там вроде Baa хотел написать для этого DLL, которая делает выше перечисленное.
А в принципе можешь и сам сделать - не очень и сложно...


--------------------
С уважением, г-н Посол.
PM   Вверх
AndreySoft
Дата 22.10.2003, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.10.2003
Где: Железногорск

Репутация: нет
Всего: нет



Цитата(Pakshin @ 22.10.2003, 18:51)
Как я понял, IP узнаётся по адресу. Значит на этот адрес можно послать новый IP! Но я могу ошибаться...

т.е. ты не знаешь можно ли таким способом установить новый IP... Так?
PM MAIL WWW ICQ   Вверх
AndreySoft
Дата 22.10.2003, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.10.2003
Где: Железногорск

Репутация: нет
Всего: нет



Цитата(p0s0l @ 22.10.2003, 20:41)
Где-то была тема в разделе C про это. Там вроде Baa хотел написать для этого DLL, которая делает выше перечисленное.
А в принципе можешь и сам сделать - не очень и сложно...

Значит надо использовать реестр?
И больше никак?
PM MAIL WWW ICQ   Вверх
dvs
Дата 22.10.2003, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Владимир Драпалюк
**


Профиль
Группа: Участник Клуба
Сообщений: 660
Регистрация: 25.8.2003
Где: Воронеж->Москв а

Репутация: нет
Всего: 19



А есть еще извращенный способ сделать это:
Использовать Winexec или еще что-нибуть и утилиту ipconfig.
Но это только для извращенцев.


--------------------
Любите друг друга!
PM MAIL WWW ICQ   Вверх
AndreySoft
Дата 22.10.2003, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.10.2003
Где: Железногорск

Репутация: нет
Всего: нет



Цитата(dvs15 @ 22.10.2003, 22:08)
А есть еще извращенный способ сделать это:
Использовать Winexec или еще что-нибуть и утилиту ipconfig.
Но это только для извращенцев.

Ну нет, это даже не грамотно получается. Плохой стиль программирования. т.е. Delphi запускает другую прогу - отстой полный.
Нет, мне надо чтобы это произошло чисто кодом, даже если этот код равносилен какой-нибудь из утилит (тот же, ipconfig).
Вобщем меня интересует как это осуществить программный путём...
PM MAIL WWW ICQ   Вверх
<Spawn>
Дата 22.10.2003, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Смотри интерфейс IClusCfgIPAddressInfo и его метод SetIPAddress. Вот небольшое описалово из MSDN:

Platform SDK: Windows Clustering
IClusCfgIPAddressInfo::SetIPAddress
[This is preliminary documentation and subject to change.]

The SetIPAddress method sets an IP address of the network interface, to take affect when the cluster configuration is committed.

HRESULT SetIPAddress(
ULONG ulDottedQuadIn
);
Parameters
ulDottedQuadIn
[in] The IP address of the interface to be stored in dotted quad format.
Return Values
If the SetIPAddress method successfully sets the IP address, it returns S_OK.

Any other HRESULT value indicates that the call failed.

Requirements
Windows NT/2000/XP: Included in Windows .NET Server.
Header: ClusCfgServer.idl.

See Also
IClusCfgIPAddressInfo

Platform SDK Release: November 2001 What did you think of this topic?
Let us know. Order a Platform SDK CD Online
(U.S/Canada) (International)



Requirements
Windows NT/2000/XP: Included in Windows .NET Server.
Header: ClusCfgServer.idl.
See Also
IClusCfgIPAddressInfo

Вот описалово самого интерфейса:

Platform SDK: Windows Clustering
IClusCfgIPAddressInfo
[This is preliminary documentation and subject to change.]

The IClusCfgIPAddressInfo interface sets and retrieves information about an IP address.

Methods in Vtable Order
The IClusCfgIPAddressInfo interface inherits the methods of the standard COM interface IUnknown.

In addition, IClusCfgIPAddressInfo exposes the following unique methods.

IClusCfgIPAddressInfo Method Description
GetUID Retrieves the unique identifier for an IP address.
GetIPAddress Retrieves an IP Address for the network interface.
SetIPAddress Stores an IP Address of the network interface, to take effect when the cluster configuration is committed.
GetSubnetMask Retrieves a subnet mask for the network interface.
SetSubnetMask Stores a subnet mask for the network interface, to take effect when the cluster configuration is committed.


Requirements
Windows NT/2000/XP: Included in Windows .NET Server.
Header: ClusCfgServer.idl.

Platform SDK Release: November 2001 What did you think of this topic?
Let us know. Order a Platform SDK CD Online
(U.S/Canada) (International)



Requirements
Windows NT/2000/XP: Included in Windows .NET Server.
Header: ClusCfgServer.idl.



--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Baa
Дата 23.10.2003, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: нет
Всего: 12



Гы smile.gif Spawn, во ты посоветовал... это назвывается выставить IP через попу smile.gif может еще через RPC выставим? wink.gif
У функции название конечно заманчивое, но ты знаешь, что значит это: IClusCfgIPAddressInfo::SetIPAddress
Енто ж метод COM Interface'а...
более того
Цитата
Requirements
Windows NT/2000/XP: Included in Windows .NET Server.
Header: ClusCfgServer.idl


Прально Posol грит smile.gif надо через реестр... самое логичное этому объяснение:
Ента инфа нужна драйверу, а откуда ему еще брать параметры, как не из реестра? wink.gif
Чтобы проще было енто се юзать, все засовывается в длл... могу поделиться онной...впрочем, как уже говорилось, создать подобную труда не составит.


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Dmitry V.Abramov
Дата 23.10.2003, 05:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.9.2003
Где: Saint-Petersburg

Репутация: 5
Всего: 4



Цитата(Baa @ 23.10.2003, 00:44)
Прально Posol грит smile.gif надо через реестр... самое логичное этому объяснение:
Ента инфа нужна драйверу, а откуда ему еще брать параметры, как не из реестра? wink.gif

Есть еще одно объяснение - в машине может стоять N сетевых карт. Каждой из которых может быть прописано M адресов. Который из них отправится менять IClusCfgIPAddressInfo::SetIPAddress - не очень понятно...
--------------------
/DVA
PM MAIL WWW   Вверх
AndreySoft
Дата 23.10.2003, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.10.2003
Где: Железногорск

Репутация: нет
Всего: нет



Цитата(Baa @ 23.10.2003, 00:44)
Гы smile.gif Spawn, во ты посоветовал... это назвывается выставить IP через попу smile.gif может еще через RPC выставим? wink.gif
У функции название конечно заманчивое, но ты знаешь, что значит это: IClusCfgIPAddressInfo::SetIPAddress
Енто ж метод COM Interface'а...
более того
Цитата
Requirements
Windows NT/2000/XP: Included in Windows .NET Server.
Header: ClusCfgServer.idl


Прально Posol грит smile.gif надо через реестр... самое логичное этому объяснение:
Ента инфа нужна драйверу, а откуда ему еще брать параметры, как не из реестра? wink.gif
Чтобы проще было енто се юзать, все засовывается в длл... могу поделиться онной...впрочем, как уже говорилось, создать подобную труда не составит.

Я тоже считаю что через реестр будет более правильно и полегче.

Ну а пример свой можешь дать?
PM MAIL WWW ICQ   Вверх
AndreySoft
Дата 24.10.2003, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.10.2003
Где: Железногорск

Репутация: нет
Всего: нет



Алё! Примерчик выложишь, или как?
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1062 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.