Что нового

Отображение сетевых подключений.

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
Здравствуйте, мне нужно отобразить сетевые подключения в массив и вызвать их. Отобразить нужно как в пуске(желательно в массив):
6713.47727326898.png

После нужно запустить как обычно:
5735.11841426726.png
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Ganibal95 [?]
отобразить сетевые подключения в массив
что это значит? создать массив элементами которого являются подключения?
 
Автор
Ganibal95

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
Kaster
Ну мне нужно массив типо:
$Array[$n][0] - Например имя подключения
$Array[$n][1] - Еще что-то и.т.д...
 

Renz

Осваивающий
Сообщения
63
Репутация
37
Лови :beer:

Код:
#NoTrayIcon
;~ Opt("TrayOnEventMode",1)
Opt("TrayMenuMode",1)   ; Default tray menu items (Script Paused/Exit) will not be shown.
TraySetClick(16)    ; Only secondary mouse button will show the tray menu.

Global $aNetConnect
Global $exititem
Global $objShell = ObjCreate("Shell.Application")

$begin = TimerInit()
_UpdateTray()

While 1
	
	$dif = TimerDiff($begin)
	If $dif > 15000 Then ; time update tray
		
		_UpdateTray()
		
		$begin = TimerInit()
	EndIf
	$msg = TrayGetMsg()
	If $msg = $exititem Then
		Exit
	Endif
	$rows = UBound($aNetConnect)
	For $n=0 To $rows - 1
		If $msg = $aNetConnect[$n][5] Then
			_ONOFFConnect($n)
		ElseIf $msg = $aNetConnect[$n][6] Then
			_OpenSetting($n)
		EndIf
		
	Next
	
WEnd

Func _ONOFFConnect($row)
	
	$aNetConnect[$n][3].DoIt
	TraySetState(2)
	Sleep(2000) 
	_UpdateTray()
	
EndFunc

Func _OpenSetting($row)
	
	If $aNetConnect[$n][2] Then
		$aNetConnect[$n][4].DoIt
	EndIf
	
EndFunc

Func _UpdateTray()
	
	_CleanTray()
	_GetNetConn()
	
	$rows = UBound($aNetConnect)
	
	For $n=0 To $rows - 1
		
		$aNetConnect[$n][7]  = TrayCreateMenu($aNetConnect[$n][0].Name)
		$sTextOnOff = ""
		If $aNetConnect[$n][1] Then
			$sTextOnOff = "On"
		Else
			$sTextOnOff = "Off"
		EndIf
		$aNetConnect[$n][5] = TrayCreateItem($sTextOnOff,$aNetConnect[$n][7])
		If $aNetConnect[$n][2] Then
			$aNetConnect[$n][6] = TrayCreateItem("Setting",$aNetConnect[$n][7])
		EndIf
	Next
;~ 	TrayCreateItem("")	
	$exititem = TrayCreateItem("Exit")
	
	TraySetState()
	
EndFunc

Func _CleanTray()
	
	$rows = UBound($aNetConnect)
	For $n=0 To $rows - 1
		TrayItemDelete($aNetConnect[$n][5])
		If $aNetConnect[$n][2] Then
			TrayItemDelete($aNetConnect[$n][6])
		EndIf
		TrayItemDelete($aNetConnect[$n][7])
		TrayItemDelete($exititem)
	Next
	TraySetState(2)
EndFunc

Func _GetNetConn()

$CSIDL_NetworkConnections = 0x31
$objNS = $objShell.Namespace($CSIDL_NetworkConnections)
$CountNS = $objNS.Items.Count
;1 -Состояние (вкл\выкл) 2 - наличие Свойства 3 -объект вкл\выкл 4 - объект свойства 5 - controlID Вкл 6 - controlID Свойства 7- controlID menu
Dim $aNetCon[$CountNS][8] 
$n = 0

For $objItem in $objNS.Items
	
	$aNetCon[$n][0] = $objItem
;~ 	ConsoleWrite("NetConnect= " & $aNetCon[$n][0].Name & @CRLF)
	For $objVerbs in $aNetCon[$n][0].verbs
		If $objVerbs.Name = "Вкл&ючить" OR $objVerbs.Name = "Подкл&ючить" Then
			$aNetCon[$n][1] = False
			$aNetCon[$n][3] = $objVerbs
		ElseIf $objVerbs.Name = "Отклю&чить" OR $objVerbs.Name = "&Отключить" Then
			$aNetCon[$n][1] = True
			$aNetCon[$n][3] = $objVerbs
		ElseIf $objVerbs.Name = "Сво&йства" Then
			$aNetCon[$n][2] = True
			$aNetCon[$n][4] = $objVerbs
		EndIf		
;~ 		ConsoleWrite("     verbs= " & $objVerbs.Name & @CRLF)
	Next
	If $aNetCon[$n][2] <> True Then
		$aNetCon[$n][2] = False
	EndIf
	$n += 1
	
Next

$aNetConnect = $aNetCon

EndFunc

Тестил на win7 32
 
Автор
Ganibal95

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
Renz
Спасибо, а как вызвать такое окошечко? При подключении. А то отключил, а назад не подключает...
 

Mur

Осваивающий
Сообщения
132
Репутация
32
r.click по подключению - свойства - параметры - галочка в "Запрашивать логин\пароль"
 

Dimmak

Знающий
Сообщения
185
Репутация
9
Я тоже немного запутался:
Код:
_GetNetConn()
If $aNetConnect[0][1] = True Then
	$aNetConnect[0][3].DoIt ; Отключить
Else
					  ; Включить
EndIf

Как снова активировать соединение на 1ом адаптере? :stars:
 
Автор
Ganibal95

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
У меня и было так:



Добавлено:
Сообщение автоматически объединено:

Dimmak
У меня такой-же вопрос!!!
 

Mur

Осваивающий
Сообщения
132
Репутация
32
Dimmak,
Код:
;1 -Состояние (вкл\выкл) 2 - наличие Свойства 3 -объект вкл\выкл 4 - объект свойства 5 - controlID Вкл 6 - controlID Свойства 7- controlID menu
;~  ConsoleWrite("NetConnect= " & $aNetCon[$n][0].Name & @CRLF)
3 -вкл-выкл, попробуйте
:-\
Код:
_GetNetConn()
If $aNetConnect[0][1] = False Then ;проверяем состояние и если false
    $aNetConnect[0][3].DoIt ;меняем на противоположное
Else
                    
EndIf



Ganibal95, на скрине всё верно.
OffTopic:
Обычно это окно всё же появляется после пере-подключения к интернету... :scratch:
 

Dimmak

Знающий
Сообщения
185
Репутация
9
После перезагрузки компа пришел к выводу, что нужно сперва проверить имя подключения, а затем уже проверять его статус:
Код:
_GetNetConn()
For $i = 0 to UBound( $aNetConnect, 0 )-1
	If $aNetConnect[$i][0].Name = 'NameOfConnection' Then

		If $aNetConnect[$i][1] = True Then
			$aNetConnect[$i][3].DoIt  ; Отключить
				tti('OFF', 500)
		Else
			$aNetConnect[$i][3].DoIt  ; Включить
				tti('ON', 500)
		EndIf

	EndIf
Next

Func tti($message, $time)
        ToolTip(@CR&" "&@CR&" "& "" &@CR&" "&@CR&" ", Default, Default, $message, 1, 5)
        sleep($time)
    ToolTip("")
EndFunc
 
Верх