uses
SysUtils, windows, setupapi;
procedure RestartADSL(gd: TGUID);
var
pcp: TSPPropChangeParams;
DevInfo: HDEVINFO;
DevInfoData: SP_DEVINFO_DATA;
DataT, buffersize: DWORD;
buffer, DevDescr:array[0..499]of char;
i: Integer;
begin
pcp.ClassInstallHeader.cbSize:= sizeof(SP_CLASSINSTALL_HEADER);
pcp.ClassInstallHeader.InstallFunction:= DIF_PROPERTYCHANGE;
pcp.Scope:= DICS_FLAG_CONFIGSPECIFIC;
pcp.StateChange:= DICS_PROPCHANGE;
pcp.HwProfile:= 0;
DevInfo:= SetupDiGetClassDevs(@gd, 0, 0, 0);
DevInfoData.cbSize := sizeof(SP_DEVINFO_DATA);
buffersize:= 500;
i:= 0;
while(SetupDiEnumDeviceInfo(DevInfo, i, DevInfoData)) do
begin
SetupDiGetDeviceRegistryProperty(DevInfo, DevInfoData, SPDRP_ENUMERATOR_NAME, @DataT, @buffer, buffersize, @buffersize);
if pos('SW',string(buffer))<>0 then
begin
SetupDiSetClassInstallParams(DevInfo, @DevInfoData, @pcp.ClassInstallHeader, sizeof(pcp));
SetupDiCallClassInstaller(DIF_PROPERTYCHANGE, DevInfo, @DevInfoData);
end;
inc(i);
end;
end;
var
numGuids, reqGuids: DWORD;
guids:array[0..15]of TGUID;
i:word;
begin
reqGuids:=16;
numGuids:=0;
SetupDiClassGuidsFromName('Net', @guids, reqGuids, numGuids);
if numGuids<>0 then
for i:= 0 to numGuids-1 do
RestartADSL(guids);
MessageBox(0,'','',0);
end.
Перезапуск АДСЛ модема
Вернуть его в норм сосотояние можно несколькими способами:
1)в Диспечере устройств отключить и снова включить его
2)вытащить и снова вставить АДСЛ кабель
Также есть прога RestartADSL - змаленькое окошко - на ней кнопка - при нажатии на кнопку происходит таже реакция что и в п2 (отключение и снова подключение сетевого кабеля) - я искал в инете исходники этой проги но нигде не нашёл, подскажите если кто знает как это сделать. Мне нужно чтобы прога постоянно пинговала определённый сервер и при длительном отсутствии пинга делала рестарт адсл. С пингом всё понятно - но как сделать рестарт?
http://forum.sources.ru/index.php?showtopic=88910&view=showall&hl=
правда там на C++, если разберешься, то отлично, если нет, то попробую перевести, но чуток подождать придется.
посмотри здесь
правда там на C++, если разберешься, то отлично, если нет, то попробую перевести, но чуток подождать придется.
Цитата: kosfiz
посмотри здесь http://forum.sources.ru/index.php?showtopic=88910&view=showall&hl=
правда там на C++, если разберешься, то отлично, если нет, то попробую перевести, но чуток подождать придется.
правда там на C++, если разберешься, то отлично, если нет, то попробую перевести, но чуток подождать придется.
я С++ немного понимаю но лучше всёже перевести на делфи, я подожду.
Код:
тебе понадобится SetupAPI.pas? я приложил его в архиве.
P.S. за правильность перевода не ручаюсь.
Ещё такой вопрос а где можно найти хелп или просто описание функций типа SetupDiEnumDeviceInfo, в справке по setupapi их нет