Flasher

|
Posted: Fri Mar 05, 2010 12:15 Post subject: |
|
|
Пару недель назад нашёл несколько раздельных решений своего вопроса. Решил таки выложить. Надеюсь кому-то будет полезным. Хотелось бы увидеть мнение о работоспособности предложенного людей с динамическим IP, а также у кого не WinXP, а, скажем, семёрка или Виста.
Ну первый и известный многим способ, упомянутый в первом посте, это включение/выключение сетевой платы с помощью devcon . Код кнопки:TOTALCMD#BAR#DATA
devcon
enable(disable) PCI\VEN_xxxx
Путь\ваша библиотека иконок.dll,№
Включить(Отключить) сетевую карту (сеть, интернет)
%COMMANDER_PATH%\Utils\
-1 Положите devcon.exe, например, в папку Utils вашего Коммандера. Откройте Диспетчер устройств(Device Manager), в секции <Сетевые платы> вызовите Свойства своей из контекстного меню, перейдите на вкладку <Сведения>, из окошка скопируйте четыре символа после PCI\VEN_ и вставьте в графу Параметры этой кнопки вместо xxxx
Следующий способ с помошью батника:
Code: | @echo off
if {%3}=={} @echo Syntax: ConnInterface Action InterfaceName Status&goto :EOF
setlocal
set Action=%1
set IFN=%2
set Action=%Action:"=%
if /i "%action%" EQU "C" goto con
if /i "%action%" EQU "D" goto dis
if /i "%action%" EQU "S" goto sta
@echo Error: ConnInterface %1 %2 %3 - Action is must be C,D, or S
endlocal
goto :EOF
:con
set IC=cnic %IFN% -c -s -v
goto doit
:dis
set IC=cnic %IFN% -d -s -v
goto doit
:sta
set status=E
set wrk=E
for /f "Tokens=*" %%s in ('cnic %IFN% -s -v^|find "connected"') do (
set wrk=%%s
)
set wrk=%wrk:"=%
if "%wrk%" EQU "E" goto finish
set wrk=%wrk:*disconnected=D%
if "%wrk%" EQU "D" set status=D&goto finish
set wrk=%wrk:*connected=C%
if "%wrk%" EQU "C" set status=C
:finish
endlocal&set %3=%status%
goto :EOF
:doit
set status=E
for /f "Tokens=*" %%s in ('%IC%^|find "Operation succeded"') do (
set status=Y
)
if "%status%" EQU "E" goto finish
goto sta | Сохраните код, например, в ConnInterface.bat , положите его в каталог вместе с распакованным отсюда CNic.exe
Код кнопки для него:TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\chp\chp.exe ConnInterface
C(D) "Подключение по локальной сети" %PATHEXT%
Icons\Включить(Выключить)_сеть.ico
Включить(Выключить) локальную сеть (интернет)
%COMMANDER_PATH%\Utils\ConnInterface\
1
-1
Утилита chp скрывает чёрные окна.
Ну и третий способ выкладываю для пишущих в Autoit, поскольку требуется в доработке. В отличии от предыдущих должен удовлетворять моей задаче Включать/Выключать одной кнопкой. Ведёт себя некорректно, постоянно идёт на включение(к автору пока не обращался).
Code: | _NetConnection_Verb("Подключение по локальной сети", "&Отключить")
MsgBox (48, "Сообщение", "Адаптер отключен!")
_NetConnection_Verb("Подключение по локальной сети", "&Включить")
MsgBox (64, "Сообщение", "Адаптер включен!")
Func _NetConnection_Verb($sConnectionName, $sVerb)
Local $sFolderName = "Сетевые подключения"
Local $oNetConnections, $oConnection
Local $oShellApp = ObjCreate("Shell.Application")
Local $oControlPanel = $oShellApp.Namespace(3)
For $oFolderItem In $oControlPanel.Items
If $oFolderItem.Name = $sFolderName Then
$oNetConnections = $oFolderItem.GetFolder
ExitLoop
EndIf
Next
If Not(IsObj($oNetConnections)) Then Return SetError(1, 0, False)
For $oFolderitem In $oNetConnections.Items
If StringInStr($oFolderitem.Name, $sConnectionName) Then
$oConnection = $oFolderitem
ExitLoop
EndIf
Next
If Not(IsObj($oConnection)) Then Return SetError(2, 0, False)
$oConnection.InvokeVerb($sVerb)
Sleep(1000)
EndFunc |
Если возникнет реализация объединения в одну кнопку Connect/Disconnect по одному из из первых двух способов, буду примного благодарен.
Last edited by Flasher on Sun Mar 07, 2010 15:19; edited 7 times in total |
|