1 (изменено: ypppu, 2013-10-25 18:48:41)

Тема: AHK: Управлением сетевым адаптером

По сути мне нужно отключаться/подключаться к интернету  и по аналогу к локальной сети.

На все мои происки, типа: netsh interface set interface name="Имя сетевого интерфейса" admin=disable и аналогичные.

Я получаю ответы: "Интерфейс с таким именем не зарегистрирован на маршрутизаторе." или просто "Устройство не найдено".

Имя я указываю верное и оно не на русском языке(специально переименовал и оно одно слово, т.е. пробелов нет), а имя устройства естественно на английском языке.

Вот пример:

C:\Users\SASA>netsh interface set interface name="lan" admin=disable
Интерфейс с таким именем не зарегистрирован на маршрутизаторе.

или 

C:\Users\SASA>netsh interface set interface name="Realtek PCIe GBE Family Controller #2" disable
Интерфейс с таким именем не зарегистрирован на маршрутизаторе.
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

2

Re: AHK: Управлением сетевым адаптером

Indomito, большая просьба: в названии темы не употреблять слова "помогите написать скрипт". Они не передают суть  темы и затрудняют поиск.

3

Re: AHK: Управлением сетевым адаптером

Вот здесь разбирались с ethernet-адаптерами: AHK: Настройки сетевого адаптера.

Про подключаемые соединения можно почитать здесь: AHK: подключение/отключение интернета.

4

Re: AHK: Управлением сетевым адаптером

ypppu пишет:

Indomito, большая просьба: в названии темы не употреблять слова "помогите написать скрипт". ....

сорри, как то не заметил и забыл о правилах написания заголовка топика.
Приношу извинения.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

5

Re: AHK: Управлением сетевым адаптером

ypppu
С этим скриптом всё понятно

+ открыть спойлер
; ========== НАСТРОЙКИ ПОЛЬЗОВАТЕЛЯ ===============
ConnectName = modem_SkyLink
Login = polzovatel
Pass = parol

AdapterNum = 2 ; с какого адаптера получать IP (обычно со 2-го)
SleepTime = 1000 ; пауза между коннектами (при неудачной попытке)
; ========== КОНЕЦ НАСТРОЕК ПОЛЬЗОВАТЕЛЯ ==========



IP_Before := A_IPAddress%AdapterNum%
If IP_Before != 0.0.0.0 ; коннект уже есть
{
     ExitApp ; конец скрипта
}

Connect:
RunWait, rasdial "%ConnectName%" "%Login%" "%Pass%",, Hide ; коннектимся


IP_After := A_IPAddress%AdapterNum%

If IP_After = 0.0.0.0 ; нет коннекта
{
    Sleep, %SleepTime%
    Goto, Connect
}

А вот как выключить то?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

6

Re: AHK: Управлением сетевым адаптером

rasdial /? пишет:

Вызов:
        rasdial элемент [пользователь [пароль|*]] [/DOMAIN:домен]
                [/PHONE:номерТелефона] [/CALLBACK:ответныйНомер]
                [/PHONEBOOK:файлАдреснойКниги] [/PREFIXSUFFIX]

        rasdial [элемент] /DISCONNECT

        rasdial

Команда успешно завершена.

7

Re: AHK: Управлением сетевым адаптером

Моим сетевым адаптерам или OS "глубоко по фигу" на вариант rasdial Intrnet /DISCONNECT
Вот моя конфигурация по команде IpConfig

+ открыть спойлер

C:\Users\SASA>rasdial Internet /disconnect
Отсутствуют подключения
Команда успешно выполнена.

C:\Users\SASA>ipconfig

Настройка протокола IP для Windows


Ethernet adapter lan:

   Состояние среды. . . . . . . . : Среда передачи недоступна.
   DNS-суффикс подключения . . . . . :

Ethernet adapter Internet:

   DNS-суффикс подключения . . . . . :
   Локальный IPv6-адрес канала . . . : fe80::b922:c96b:37c:cede%15
   IPv4-адрес. . . . . . . . . . . . : 192.168.0.10
   Маска подсети . . . . . . . . . . : 255.255.255.0
   Основной шлюз. . . . . . . . . : 192.168.0.1

Туннельный адаптер isatap.{C2330E1C-F3F7-400F-B7D2-DBB1DD60B24B}:

   Состояние среды. . . . . . . . : Среда передачи недоступна.
   DNS-суффикс подключения . . . . . :

Туннельный адаптер isatap.{D5630DFB-A5DE-4093-8098-C0EB733BD7BA}:

   Состояние среды. . . . . . . . : Среда передачи недоступна.
   DNS-суффикс подключения . . . . . :

Туннельный адаптер Teredo Tunneling Pseudo-Interface:

   DNS-суффикс подключения . . . . . :
   IPv6-адрес. . . . . . . . . . . . : 2001:0:5ef5:79fd:143e:b544:a30c:59f4
   Локальный IPv6-адрес канала . . . : fe80::143e:b544:a30c:59f4%12
   Основной шлюз. . . . . . . . . : ::

C:\Users\SASA>

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

8

Re: AHK: Управлением сетевым адаптером

А где здесь подключаемые соединения? Rasdial управляет соединениями типа dial-up, VPN и т. п.

9

Re: AHK: Управлением сетевым адаптером

У меня модем-роутер, вот в чём проблема, подключение идёт автоматом, т.е. надо отключать устройство что ли?
Те мне надо выключать сетевую карту, как устройство(Realtek PCIe GBE Family Controller) ?
Я верно понимаю?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

10 (изменено: Indomito, 2013-10-26 06:42:27)

Re: AHK: Управлением сетевым адаптером

Посидел, посмотрел одновременно и  в диспетчер устройств и в сетевые подключения, и оказалось, что я трее отключаю устройство, просто диспетчер ругается, а иконка в трее просто нажимается без вопросов.   Да, уж.... )))))))

А есть универсальный скрипт для выключения/включения сетевого устройства, ну скажем по имени, штатными средствами Windows 7, а?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

11

Re: AHK: Управлением сетевым адаптером

Попытался отрубить сетевой адаптер с помощью батника и devcon

devcon disable "PCI\VEN_10EC&DEV_8168&SUBSYS_E0001458&REV_06"
devcon disable "PCI\VEN_10EC&DEV_8168&SUBSYS_E0001458"
devcon disable "PCI\VEN_10EC&DEV_8168&CC_020000"
devcon disable "PCI\VEN_10EC&DEV_8168&CC_0200"

Эффект нулевой, что я не так написал?
ID я взял из Диспетчера Устройств сетевой карты

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

12 (изменено: YMP, 2013-10-26 11:37:34)

Re: AHK: Управлением сетевым адаптером

Эксперименты показали, что отключиться от сети можно, например, так:


netsh interface ipv4 set address name="My Connection"

При этом стирается адрес, маска и адрес шлюза. Поэтому, чтобы опять подключиться, надо их установить:


netsh interface ipv4 set address name="My Connection" source=static address=192.168.0.10 mask=255.255.255.0 gateway=192.168.0.1

Предупреждение читателям темы: пример дан для конкретного типа подключения и конкретных IP-адресов. Так что не надо запускать его вслепую.

13 (изменено: Indomito, 2013-10-26 11:37:15)

Re: AHK: Управлением сетевым адаптером

YMP у меня нет адреса, маски и шлюза они назначены в роуторе, но команду попробую - вдруг получится

UPD

Гы... сорри, получилось, только с приколами

При команде

netsh interface ipv4 set address name="Internet"

адаптер не отрубается как у Windows,  а получает статус "Не распознанная сеть", но от Инета отключается т.к. видимо всё же теряет IP, etc (конечно, т.к. он назначается автоматически, со стороны роутера)

За то по команде

netsh interface ipv4 set address name="Internet" source=static address=192.168.0.10 mask=255.255.255.0 gateway=192.168.0.1

статус "Не распознанная сеть" меняется на "Сеть 4" ну и подключается к Инету.


Большое спасибо, а то я думал так и не получится это сделать.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

14

Re: AHK: Управлением сетевым адаптером

Indomito пишет:

За то по команде

netsh interface ipv4 set address name="Internet" source=static address=192.168.0.10 mask=255.255.255.0 gateway=192.168.0.1

статус "Не распознанная сеть" меняется на "Сеть 4" ну и подключается к Инету.

Только у вас, наверно, теперь в свойствах подключения всё вручную назначено, т.к. в команде source=static. Надо было мне об этом предупредить.

15 (изменено: Indomito, 2013-10-26 12:06:13)

Re: AHK: Управлением сетевым адаптером

Надо бы это точно.... пришлось три раза комп перезагружать, просто я сразу не понял в чём было дело.

Так source=static просто убрать или заменить на что то?  Я просто help для netsh не могу найти.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

16

Re: AHK: Управлением сетевым адаптером

Справка есть тут: http://technet.microsoft.com/en-us/libr … s.10).aspx. Но не сказал бы, что там есть все тонкости, приходится экспериментировать, чтобы понять, как оно всё работает.

Вообще, странно, что отключающая команда у вас подействовала. Я вот перенастроил своё подключение на DHCP (получение всего от роутера) и она перестала работать. Работает только, если указать source=static и address=<IP компа>. Зато чтобы включить, достаточно этого:


netsh interface ipv4 set address name="My Connection" source=dhcp

А после чего перезагружать пришлось?

17

Re: AHK: Управлением сетевым адаптером

Я так и не понял почему сеть включалась и выключалась, сейчас написал

netsh interface ipv4 set address name="Internet"

нулевая реакция, видимо после переключения Windows-ом на DHCP, что то поменялось.

А отключить вот такой командой не прокатит -

netsh interface ipv4 set address name="Internet" source=static  address=127.0.0.0

Как думаешь?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

18

Re: AHK: Управлением сетевым адаптером

Нет, я уже пробовал 0.0.0.0 и 127.0.0.0 — не работает. Но, к примеру, 192.168.0.0 сработало. Наверно, значение должно быть в допустимом для локальных адресов диапазоне.

Т.е. выключение:

netsh interface ipv4 set address name="Internet" source=static  address=192.168.0.0

Включение:

netsh interface ipv4 set address name="Internet" source=dhcp

Т.к. имя в одно слово, то можно вообще-то и без кавычек.

19 (изменено: Indomito, 2013-10-26 13:14:40)

Re: AHK: Управлением сетевым адаптером

Или ещё проще

OFF

netsh interface ipv4 set address "Internet"  static 192.168.0.0

ON

netsh interface ipv4 set address "Internet" dhcp

Вроде, всё же проблему решили, но немного странным методом,   диск отключить проще чем интернет

P.S. Кстати у меня отключение срабатывает при

netsh interface ipv4 set address "Internet"  static 1.0.0.0
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

20

Re: AHK: Управлением сетевым адаптером

Но и запутаться так тоже проще. Не работают, наверно, адреса, которые уже где-то задействованы, как 127.0.0.0. Помнится, 0.0.0.0 тоже где-то мелькало.

21

Re: AHK: Управлением сетевым адаптером

127.0.0.0 кажется в файле HOSTS прописан, а нулевого просто не существует его БГ(Билл Гейтс) себе купил (шутка)

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

22

Re: AHK: Управлением сетевым адаптером

+ OFF

IP-адрес 0.0.0.0 с маской 0.0.0.0 означает любой IP-адрес везде. Это называется Шлюз по умолчанию (default gateway).

127.0.0.0 (localhost) - интерфейс обратной петли или внутренний интерфейс IP-стека. Этот интерфейс достижим только с локальной машины.

255.255.255.255 - глобальный широковещательный адрес.

224.0.0.0 - другой широковещательный адрес и на вашу сеть, и на сеть провайдера. Результатом действия двух записей с сетевым адресом 224.0.0.0 будет широковещательная рассылка пакетов по вашей сети и сети провайдера.

Источник

Диапазон IP адресов, которые выделены локальным  сетям:

    10.0.0.0 — 10.255.255.255
    172.16.0.0 — 172.31.255.255
    192.168.0.0 — 192.168.255.255

23 (изменено: Indomito, 2013-10-27 08:45:19)

Re: AHK: Управлением сетевым адаптером

ypppu Спасибо за информацию.

to All

Вопрос №1 Что лучше/правильнее написать в команде - netsh interface ipv4 set address "Internet"  static ?

Вопрос №2 Как узнать что интернет не работает, средствами AHK, желательно наиболее простым и надёжным методом, что я программно сделал переключение на static и обратно на dhcp ?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

24

Re: AHK: Управлением сетевым адаптером

Indomito пишет:

Вопрос №1 Что лучше/правильнее написать в команде - netsh interface ipv4 set address "Internet"  static ?

Вопрос №2 Как узнать что интернет не работает, средствами AHK, желательно наиболее простым и надёжным методом, что я программно сделал переключение на static и обратно на dhcp ?

1) Правильнее для кого и в какой ситуации?

2) А что, в АНК есть средства работы с сетью? Вроде бы нет. Поэтому очевидный ответ — никак.

25

Re: AHK: Управлением сетевым адаптером

ypppu

1. Что бы было правильно )))) Я пишу только адрес, т.е. IP может стоит дописать и остальное, вот в чем вопрос.
2. А вызовом внешних программ, которые могут вернуть, мне ответ. Я же вызываю netsh, хотя у AHK нет такой функции.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

26

Re: AHK: Управлением сетевым адаптером

Indomito пишет:

Я пишу только адрес, т.е. IP может стоит дописать и остальное, вот в чем вопрос.

Что остальное и зачем? Чтобы сеть заработала со статической настройкой?

Indomito пишет:

2. А вызовом внешних программ, которые могут вернуть, мне ответ. Я же вызываю netsh, хотя у AHK нет такой функции.

Ну вот netsh может выдавать разную информацию командой show.

netsh interface ipv4 show /?

27 (изменено: Indomito, 2013-10-27 09:24:51)

Re: AHK: Управлением сетевым адаптером

Спасибо, вопрос исчерпан - дальше я сам разберусь, правда

+ открыть спойлер

Microsoft Windows [Version 6.1.7601]
(c) 2011 Корпорация Майкрософт. Все права защищены.

C:\Users\SASA>netsh interface ipv4 show /?

Применимы следующие команды:

Команды в этом контексте:
show addresses - Отображает конфигурации IP-адресов.
show compartments - Отображает параметры секции.
show config    - Отображение IP-адреса и дополнительных сведений.
show destinationcache - Выводит записи конечного кэша.
show dnsservers - Отображение адресов DNS-сервера.
show dynamicportrange - Отображает параметры конфигурации динамического диапазона портов.
show global    - Выводит общие параметры глобальной конфигурации.
show icmpstats - Отображение статистики ICMP.
show interfaces - Выводит параметры интерфейса.
show ipaddresses - Отображает текущие IP-адреса.
show ipnettomedia - Отображение сопоставления сетей IP и физических носителей.
show ipstats   - Отображение статистики IP.
show joins     - Отображение присоединенных многоадресных групп.
show neighbors - Выводит записи кэша соседей.
show offload   - Отображает информацию разгрузки.
show route     - Выводит записи таблицы маршрутов.
show subinterfaces - Отображает параметры подчиненного интерфейса.
show tcpconnections - Отображение TCP-подключений.
show tcpstats  - Отображение статистики TCP.
show udpconnections - Отображение UDP-подключений.
show udpstats  - Отображение статистики UDP.
show winsservers - Отображение адресов WINS-сервера.

он только отображает, но не возвращает результат.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

28 (изменено: YMP, 2013-10-27 09:39:01)

Re: AHK: Управлением сетевым адаптером

Она выводит результат в stdout (стандартный поток вывода). Если в АНК не добавили возможность его читать, то я в Коллекции постил код по его перехвату: AHK: Запуск консольного приложения с перехватом его ввода и вывода. Правда, он только для 32 бит.

P.S. И не для юникодного АНК. Надо его дорабатывать.

29 (изменено: Indomito, 2013-10-27 10:14:14)

Re: AHK: Управлением сетевым адаптером

Команда FileAppend [, Text, Filename] умеет посылать в stdout
Параметр Filename

Standard Output (stdout): указание звёздочки (*) вместо имени файла приведёт к тому, что текст будет послан в стандартный выходной поток (stdout).

Но обратной функции/команды я не нашёл.

YMP пишет:

И не для юникодного АНК. Надо его дорабатывать.

а там много менять, т.е. это сложно и долго или просто сейчас времени нет?
Я бы сам исправил, но не очень понимаю алгоритм скрипта и где кроется ограничение для Юникода.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

30

Re: AHK: Управлением сетевым адаптером

Indomito пишет:

to All

Вопрос №2 Как узнать что интернет не работает, средствами AHK, желательно наиболее простым и надёжным методом, что я программно сделал переключение на static и обратно на dhcp ?

Это другая тема. Обсуждалась неоднократно, найдены разные решения, нужно только воспользоваться поиском.

31 (изменено: Indomito, 2013-10-27 11:35:26)

Re: AHK: Управлением сетевым адаптером

ypppu пишет:
Indomito пишет:

Вопрос №2 Как узнать что интернет не работает, средствами AHK, желательно наиболее простым и надёжным методом, что я программно сделал переключение на static и обратно на dhcp ?

Это другая тема. Обсуждалась неоднократно, найдены разные решения, нужно только воспользоваться поиском.

Уточни, если не сложно, что именно обсуждалось? Переключение или что иное?

P.S. Я конечно могу узнать используя WinWait ahk_pid %OutputVarPID% но это на время одного сеанса т.к. после перезагрузки скрипта я потеряю значение  OutputVarPID

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

32

Re: AHK: Управлением сетевым адаптером

Просто создаёшь список из 10 сайтов, которые всё время онлайн (гугол, йандекс ...) и перебираешь их командой UrlDownloadToFile. Если хоть один загрузился, значит интернет точно доступен. Если ни один не загрузился, значит точно недоступен.

33 (изменено: Indomito, 2013-10-27 12:38:30)

Re: AHK: Управлением сетевым адаптером

Вопрос по реализации на AHK ON/OFF
Вот код:

;=========Отключить доступ в интернет
InternetOFF:
;netsh interface ipv4 set address "Internet"  static 1.0.0.0 
Run, %cNetOFF% ,,, %vInternetPID%
WinWait ahk_pid %vInternetPID%
msgbox, %vInternetPID%
return
;=========

;=========Вкючить доступ в интернет
InternetON:
;netsh interface ipv4 set address "Internet" dhcp
Run, %cNetON% ,,, %vInternetPID%
WinWait ahk_pid %vInternetPID%
msgbox, %vInternetPID%
return
;=========

если не писать WinWait, то msgbox, %vInternetPID% выдаёт 0, а при
WinWait ждёт до бесконечности, ну так как 0
Где я ошибся?

Да, фрагмент начальных определений:

cEscLF    := "`n"
cEsc2LF    := cEscLF cEscLF
cEscCR    := "`r"
cEscCRLF  := cEscCR cEscLF
cEscTab   := "`t"
cEscSps   := " "
cEscPrc      := "`%"
cEscQts   := """"

и

cConsole     := "cmd.exe"
cNameNet     := "Internet"
cNetsh       := "netsh interface ipv4 set address" cEscSps cEscQts cNameNet cEscQts cEscSps
cNetON       := cNetsh "dhcp"
cNetOFF      := cNetsh "static 1.0.0.0" 
vInternetPID := false
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

34 (изменено: YMP, 2013-10-27 12:45:16)

Re: AHK: Управлением сетевым адаптером

Indomito пишет:

а там много менять, т.е. это сложно и долго или просто сейчас времени нет?
Я бы сам исправил, но не очень понимаю алгоритм скрипта и где кроется ограничение для Юникода.

Вот исправленный вариант, для ANSI, Юникода и x64. Пока на 101% не уверен, что я ничего не забыл, но вроде работает.


CmdLine = netsh interface ipv4 show addresses
ret := RunCon(CmdLine, 0, Output)
MsgBox, Код завершения: %ret%`r`n`r`nВывод:`r`n%Output%

; =========================== Функция ============================

RunCon(CmdLine, Input, ByRef Output)
{
    static BufSizeChar := 1024, hParent := 0
    static Show := 0, Flags := 0x101  ; STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW
    static Buf, BufSizeByte, ProcessInfo, StartupInfo, PipeAttribs
    static piSize, siSize, paSize, flOffset, shOffset, ihOffset
    static inOffset, outOffset, errOffset, thrOffset
    If (!hParent) {
        BufSizeByte := A_IsUnicode ? BufSizeChar * 2 : BufSizeChar
        If (A_PtrSize = 8) {
            piSize := 24, siSize := 104, paSize = 24
            flOffset := 60, shOffset := 64, ihOffset := 16
            inOffset := 80, outOffset := 88, errOffset := 96
            thrOffset := 8
        }
        Else {
            piSize := 16, siSize := 68, paSize = 12
            flOffset := 44, shOffset := 48, ihOffset := 8
            inOffset := 56, outOffset := 60, errOffset := 64
            thrOffset := 4
        }
        VarSetCapacity(Buf, BufSizeByte, 0),    VarSetCapacity(ProcessInfo, piSize, 0)
        VarSetCapacity(StartupInfo, siSize, 0), VarSetCapacity(PipeAttribs, paSize, 0)
        NumPut(siSize, StartupInfo, 0, "uint"), NumPut(Flags, StartupInfo, flOffset, "uint")
        NumPut(Show, StartupInfo, shOffset, "ushort")
        NumPut(paSize, PipeAttribs, 0, "uint"), NumPut(1, PipeAttribs, ihOffset, "int")
        hParent := DllCall("GetCurrentProcess", "ptr")
    }
    DllCall("CreatePipe", "ptr *", hRead1_tmp, "ptr *", hWrite2
                        , "ptr", &PipeAttribs, "uint", 0)
    DllCall("CreatePipe", "ptr *", hRead2, "ptr *", hWrite1_tmp
                        , "ptr", &PipeAttribs, "uint", 0)

    NumPut(hRead2,  StartupInfo, inOffset, "ptr") 
    NumPut(hWrite2, StartupInfo, outOffset, "ptr")
    NumPut(hWrite2, StartupInfo, errOffset, "ptr")
    
    DllCall("DuplicateHandle", "ptr", hParent, "ptr", hRead1_tmp
                             , "ptr", hParent, "ptr *", hRead1
                             , "uint", 0, "uint", 0
                             , "uint", 2)    ; DUPLICATE_SAME_ACCESS
    DllCall("CloseHandle", "ptr", hRead1_tmp)
    DllCall("DuplicateHandle", "ptr", hParent, "ptr", hWrite1_tmp
                             , "ptr", hParent, "ptr *", hWrite1
                             , "uint", 0, "uint", 0
                             , "uint", 2)
    DllCall("CloseHandle", "ptr", hWrite1_tmp)
    
    DllCall("ExpandEnvironmentStrings", "str", CmdLine, "str", Buf, "uint", BufSizeChar)
    CmdLine := Buf
    Ret := DllCall("CreateProcess", "ptr", 0, "str", CmdLine, "ptr", 0, "ptr", 0
                                  , "uint", 1, "uint", 0, "ptr", 0, "ptr", 0
                                  , "ptr", &StartupInfo, "ptr", &ProcessInfo)
    If (!Ret) {
        MsgBox,, %A_ThisFunc%, Не удалось создать процесс.
        Output := ""
        Return 1
    }
    hChild := NumGet(ProcessInfo, 0, "ptr")
    DllCall("CloseHandle", "ptr", NumGet(ProcessInfo, thrOffset, "ptr"))
    DllCall("CloseHandle", "ptr", hRead2)
    DllCall("CloseHandle", "ptr", hWrite2)
    If (Input) {
        InLen := StrLen(Input) + 2
        VarSetCapacity(InBuf, InLen, 0)
        StrPut(Input . "`r`n", &InBuf, "cp866")
        DllCall("WriteFile", "ptr", hWrite1, "ptr", &InBuf, "uint", InLen
                           , "uint *", BytesWritten, "uint", 0)
    }
    DllCall("CloseHandle", "ptr", hWrite1)
    Output := ""
    Loop {
        If not DllCall("ReadFile", "ptr", hRead1, "ptr", &Buf, "uint", BufSizeByte
                                 , "uint *", BytesRead, "uint", 0)
            Break
        NumPut(0, Buf, BytesRead, "Char")
        Output .= StrGet(&Buf, "cp866")
    }
    DllCall("CloseHandle", "ptr", hRead1)
    DllCall("GetExitCodeProcess", "ptr", hChild, "int *", ExitCode)
    DllCall("CloseHandle", "ptr", hChild)
    Return ExitCode
}

35 (изменено: Indomito, 2013-10-27 13:03:56)

Re: AHK: Управлением сетевым адаптером

Спасибо, сейчас проверю, просто у меня скрипт большой и может переменные пересеклись, т.е. описаны дважды.

P.S. Не заметил что у тебя реализовано как функция.

UPD
Да, всё отлично работает, просто "на Ура" - осталось сделать только разборку переменной Output, но это мелочи.

Большое тебе спасибо, очень выручил/помог.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

36 (изменено: Ядрён, 2013-10-27 14:57:13)

Re: AHK: Управлением сетевым адаптером

Indomito пишет:

Попытался отрубить сетевой адаптер с помощью батника и devcon

devcon disable "PCI\VEN_10EC&DEV_8168&SUBSYS_E0001458&REV_06"
devcon disable "PCI\VEN_10EC&DEV_8168&SUBSYS_E0001458"
devcon disable "PCI\VEN_10EC&DEV_8168&CC_020000"
devcon disable "PCI\VEN_10EC&DEV_8168&CC_0200"

Эффект нулевой, что я не так написал?
ID я взял из Диспетчера Устройств сетевой карты



вот код батника ,нужно только подставить пароль и логин от интернета,  имя интернета написано по пути - панель управления - сеть и интернет - сетевые подключения ( имя скорее всего это "ВЫСОКОСКОРОСТНОЕ ПОДКЛЮЧЕНИЕ")хотя может быть и другое , но можно и переименовать что бы было одно слово ,желательно английское слово, у меня написано westcall - имя соединения .

rasdial.exe/disconnect
timeout /t 15
rasdial.exe имя соединения логин пароль
@echo off
OS: Win7x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

37 (изменено: Indomito, 2013-10-27 22:39:28)

Re: AHK: Управлением сетевым адаптером

Ядрён пишет:

вот код батника ,нужно только подставить пароль и логин от интернета...

я подобное пытался делать, см. выше.
На мой тип соединения команда rasdial не может оказать воздействия она для тех соединений, у которых можно произвести diconnect, а у меня он не возможен, надо или отключать устройство или еще хуже 

Вот, смотри:

Microsoft Windows [Version 6.1.7601]
(c) 2011 Корпорация Майкрософт. Все права защищены.

C:\Users\SASA>rasdial.exe/disconnect
Отсутствуют подключения
Команда успешно выполнена.

C:\Users\SASA>

Ты пытался локалку (локальную сеть) отключить такой командой? Думаю,  что нет, хотя у меня не локалка, но принцип тот же.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

38 (изменено: Indomito, 2013-10-29 15:42:03)

Re: AHK: Управлением сетевым адаптером

YMP пишет:

Вот исправленный вариант, для ANSI, Юникода и x64. Пока на 101% не уверен, что я ничего не забыл, но вроде работает.

у тебя небольшая не точность в скрипте.
Первая строчка -

netsh interface ipv4 show interfaces

надо/правильнее написать исходя из того на что я сам наткнулся подключив локалку(у меня три карточки, правда на момент проверки одну физически отключил)

Вот мы что видим, просто у меня локалка и она не по DHCP, да и вообще если сеть выключена из трея или админки и т.д.
Вот Локальная сеть, OFF(как устройство), а Интернет ON(как устройство и DHCP включён)

C:\Users\SASA>netsh interface ipv4 show interfaces

Инд     Мет         MTU          Состояние               Имя
---  ----------  ----------  ------------  ---------------------------
  1          50  4294967295   connected      Loopback Pseudo-Interface 1
14           5             1500    disconnected  lan
15          10            1500    connected      Internet

Получается нужна двойная проверка:
- сначала netsh interface ipv4 show interfaces на физическое отключение, а не со стороны скрипта;
- потом netsh interface ipv4 show addresses на логическое отключение со стороны скрипта.
Интернет проверяется по типу соединения на DHCP, а локальная сеть по адресу, а адрес выключения может быть одинаковым IP=001.000.000.000

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

39

Re: AHK: Управлением сетевым адаптером

Почему правильнее? Это просто пример ведь, команда может быть любая.

40

Re: AHK: Управлением сетевым адаптером

Я стараюсь унифицировать скрипт, т.к. он не зависит от того на каком компе работает, он большой и многофункциональный, при первом старте проводит самопроверку и заносит нужную инфу в свой INI-файл, ну и т.д. .... я просто маньяк

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01

41

Re: AHK: Управлением сетевым адаптером

Indomito пишет:

Я стараюсь унифицировать скрипт, т.к. он не зависит от того на каком компе работает, он большой и многофункциональный, при первом старте проводит самопроверку и заносит нужную инфу в свой INI-файл, ну и т.д. .... я просто маньяк

Эй-эй, вы чего это задумали? А если на другом компе не DHCP? Или вы свои компы в виду имеете?

42

Re: AHK: Управлением сетевым адаптером

Я запоминаю IP в любом случаее, ну а потом куча условий по возвращению их в исходное состояние.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.30.01