Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перезапуск АДСЛ модема

12K
15 августа 2007 года
LentonNav
3 / / 18.08.2005
Такая проблема - иногда бывает что АДСЛ моджем виснет - т.е пишет что подключение есть, но на самом деле его нет)
Вернуть его в норм сосотояние можно несколькими способами:
1)в Диспечере устройств отключить и снова включить его
2)вытащить и снова вставить АДСЛ кабель
Также есть прога RestartADSL - змаленькое окошко - на ней кнопка - при нажатии на кнопку происходит таже реакция что и в п2 (отключение и снова подключение сетевого кабеля) - я искал в инете исходники этой проги но нигде не нашёл, подскажите если кто знает как это сделать. Мне нужно чтобы прога постоянно пинговала определённый сервер и при длительном отсутствии пинга делала рестарт адсл. С пингом всё понятно - но как сделать рестарт?
257
15 августа 2007 года
kosfiz
1.6K / / 18.09.2005
посмотри здесь http://forum.sources.ru/index.php?showtopic=88910&view=showall&hl=
правда там на C++, если разберешься, то отлично, если нет, то попробую перевести, но чуток подождать придется.
12K
16 августа 2007 года
LentonNav
3 / / 18.08.2005
Цитата: kosfiz
посмотри здесь http://forum.sources.ru/index.php?showtopic=88910&view=showall&hl=
правда там на C++, если разберешься, то отлично, если нет, то попробую перевести, но чуток подождать придется.



я С++ немного понимаю но лучше всёже перевести на делфи, я подожду.

257
17 августа 2007 года
kosfiz
1.6K / / 18.09.2005
делал для консольного приложения:
Код:
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.

тебе понадобится SetupAPI.pas? я приложил его в архиве.

P.S. за правильность перевода не ручаюсь.
12K
23 августа 2007 года
LentonNav
3 / / 18.08.2005
Огромное спасибо, всё работает :)
Ещё такой вопрос а где можно найти хелп или просто описание функций типа SetupDiEnumDeviceInfo, в справке по setupapi их нет
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог