Форум: "Сети";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Внизкак отключить и включить подключение сети программно [D6, D7, Win Найти похожие ветки
← →
chips (2004-03-17 13:04) [0]есть ли команда API ?
← →
chips (2004-03-17 13:04) [0]есть ли команда API ?
← →
BiN © (2004-03-17 14:10) [1]http://www.xprogramming.ru/Articles/NetTests.html
← →
BiN © (2004-03-17 14:10) [1]http://www.xprogramming.ru/Articles/NetTests.html
← →
Denton © (2004-03-17 20:30) [2]Эта штука не раборает!!
← →
Denton © (2004-03-17 20:30) [2]Эта штука не раборает!!
← →
Rouse_ © (2004-03-17 23:03) [3]> [2] Denton © (17.03.04 20:30)
Еще б она работала - выпрямитель ищи... (код не стандартный :)
← →
Rouse_ © (2004-03-17 23:03) [3]> [2] Denton © (17.03.04 20:30)
Еще б она работала - выпрямитель ищи... (код не стандартный :)
← →
Verg © (2004-03-18 09:24) [4]Ух ты. Не работает. Значит дурят нашего брата :)
Вот все дурят и дурят....
Давайте проверим.
Ниже код для 98-ой и выше, который следует запускать с параметром ON или OFF.
Сделаем опрос - у кого сработал, т.е. сетевой интерфейс перестал функционировать при запуске с параметром OFF, а у кого нет.
(Перед ответом не забудте запустить его же с параметром ON :) ))program IfControl;
{$APPTYPE CONSOLE}
uses
Windows,
SysUtils,
WinSock;
const
MIB_IF_ADMIN_STATUS_UP = 1;
MIB_IF_ADMIN_STATUS_DOWN = 2;
MIB_IF_ADMIN_STATUS_TESTING = 3;
MAX_INTERFACE_NAME_LEN = 256;
MAX_TRANSPORT_NAME_LEN = 40;
MAX_MEDIA_NAME = 16;
MAX_PORT_NAME = 16;
MAX_DEVICE_NAME = 128;
MAX_PHONE_NUMBER_LEN = 128;
MAX_DEVICETYPE_NAME = 16;
MAXLEN_IFDESCR = 256;
MAXLEN_PHYSADDR = 8;
type
TMIB_IFROW = record
wszName : array[0..MAX_INTERFACE_NAME_LEN-1] of widechar;
dwIndex,
dwType,
dwMtu,
dwSpeed,
dwPhysAddrLen : DWORD;
bPhysAddr : array[0..MAXLEN_PHYSADDR-1] of BYTE;
dwAdminStatus,
dwOperStatus,
dwLastChange,
dwInOctets,
dwInUcastPkts,
dwInNUcastPkts,
dwInDiscards,
dwInErrors,
dwInUnknownProtos,
dwOutOctets,
dwOutUcastPkts,
dwOutNUcastPkts,
dwOutDiscards,
dwOutErrors,
dwOutQLen,
dwDescrLen : DWORD;
bDescr : array[0..MAXLEN_IFDESCR-1] of BYTE;
end;
PMIB_IFROW = ^TMIB_IFROW;
var
InetIFMIB_ROW : TMIB_IFROW;
function GetBestInterface(
dwDestAddr : DWORD; // destination IP address
var pdwBestIfIndex : DWORD // index of interface with the best route
) : DWORD; stdcall; external "iphlpapi.dll";
function SetIfEntry(pIfRow : PMIB_IFROW // specifies interface and status
): DWORD; stdcall; external "iphlpapi.dll";
begin
{ TODO -oUser -cConsole Main : Insert code here }
try
if ParamCount < 1 then
begin
Writeln("ON/OFF parameter required");
exit;
end;
Fillchar(InetIFMIB_ROW, sizeof(InetIFMIB_ROW), 0);
if GetBestInterface( INADDR_ANY, InetIFMIB_ROW.dwIndex ) <> NO_ERROR then
begin
Writeln(SysErrorMessage(GetLastError));
exit;
end;
if AnsiUpperCase(ParamStr(1)) <> "OFF" then
InetIFMIB_ROW.dwAdminStatus := MIB_IF_ADMIN_STATUS_UP
else
InetIFMIB_ROW.dwAdminStatus := MIB_IF_ADMIN_STATUS_DOWN;
if SetIfEntry(@InetIFMIB_ROW)<> NO_ERROR then
begin
Writeln(SysErrorMessage(GetLastError));
exit;
end;
Writeln("OK");
finally
Readln;
end;
end.
← →
Verg © (2004-03-18 09:24) [4]Ух ты. Не работает. Значит дурят нашего брата :)
Вот все дурят и дурят....
Давайте проверим.
Ниже код для 98-ой и выше, который следует запускать с параметром ON или OFF.
Сделаем опрос - у кого сработал, т.е. сетевой интерфейс перестал функционировать при запуске с параметром OFF, а у кого нет.
(Перед ответом не забудте запустить его же с параметром ON :) ))program IfControl;
{$APPTYPE CONSOLE}
uses
Windows,
SysUtils,
WinSock;
const
MIB_IF_ADMIN_STATUS_UP = 1;
MIB_IF_ADMIN_STATUS_DOWN = 2;
MIB_IF_ADMIN_STATUS_TESTING = 3;
MAX_INTERFACE_NAME_LEN = 256;
MAX_TRANSPORT_NAME_LEN = 40;
MAX_MEDIA_NAME = 16;
MAX_PORT_NAME = 16;
MAX_DEVICE_NAME = 128;
MAX_PHONE_NUMBER_LEN = 128;
MAX_DEVICETYPE_NAME = 16;
MAXLEN_IFDESCR = 256;
MAXLEN_PHYSADDR = 8;
type
TMIB_IFROW = record
wszName : array[0..MAX_INTERFACE_NAME_LEN-1] of widechar;
dwIndex,
dwType,
dwMtu,
dwSpeed,
dwPhysAddrLen : DWORD;
bPhysAddr : array[0..MAXLEN_PHYSADDR-1] of BYTE;
dwAdminStatus,
dwOperStatus,
dwLastChange,
dwInOctets,
dwInUcastPkts,
dwInNUcastPkts,
dwInDiscards,
dwInErrors,
dwInUnknownProtos,
dwOutOctets,
dwOutUcastPkts,
dwOutNUcastPkts,
dwOutDiscards,
dwOutErrors,
dwOutQLen,
dwDescrLen : DWORD;
bDescr : array[0..MAXLEN_IFDESCR-1] of BYTE;
end;
PMIB_IFROW = ^TMIB_IFROW;
var
InetIFMIB_ROW : TMIB_IFROW;
function GetBestInterface(
dwDestAddr : DWORD; // destination IP address
var pdwBestIfIndex : DWORD // index of interface with the best route
) : DWORD; stdcall; external "iphlpapi.dll";
function SetIfEntry(pIfRow : PMIB_IFROW // specifies interface and status
): DWORD; stdcall; external "iphlpapi.dll";
begin
{ TODO -oUser -cConsole Main : Insert code here }
try
if ParamCount < 1 then
begin
Writeln("ON/OFF parameter required");
exit;
end;
Fillchar(InetIFMIB_ROW, sizeof(InetIFMIB_ROW), 0);
if GetBestInterface( INADDR_ANY, InetIFMIB_ROW.dwIndex ) <> NO_ERROR then
begin
Writeln(SysErrorMessage(GetLastError));
exit;
end;
if AnsiUpperCase(ParamStr(1)) <> "OFF" then
InetIFMIB_ROW.dwAdminStatus := MIB_IF_ADMIN_STATUS_UP
else
InetIFMIB_ROW.dwAdminStatus := MIB_IF_ADMIN_STATUS_DOWN;
if SetIfEntry(@InetIFMIB_ROW)<> NO_ERROR then
begin
Writeln(SysErrorMessage(GetLastError));
exit;
end;
Writeln("OK");
finally
Readln;
end;
end.
← →
chips (2004-03-18 13:54) [5]Под win2000 работает. Буду изучать мат часть. :-))
← →
chips (2004-03-18 13:54) [5]Под win2000 работает. Буду изучать мат часть. :-))
← →
Dentom (2004-03-19 00:22) [6]блин ну я не доганяю что оно делает сеть как работала так и работает????? обьясните пожалуста мне деревянному
← →
Dentom (2004-03-19 00:22) [6]блин ну я не доганяю что оно делает сеть как работала так и работает????? обьясните пожалуста мне деревянному
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.05 c