找回密码
 加入
搜索
查看: 2275|回复: 14

怎么检测网络连接的名称?

[复制链接]
发表于 2009-8-28 23:30:00 | 显示全部楼层 |阅读模式
本帖最后由 redapple2008 于 2009-8-29 07:58 编辑

怎么检测网络连接的名称?
 楼主| 发表于 2009-8-28 23:37:11 | 显示全部楼层
如何在程序中获得网络连接的名称,如:本地连接、本地连接1、本地连接2
发表于 2009-8-28 23:46:40 | 显示全部楼层
$var = Ping("www.autoitx.com")
If $var Then
TrayTip("访问Autoit软件专题站正常","本机已接入互联网,Ping返回值=" & $var,10,1)
Sleep(1200)
Else
Msgbox(16,"网络链接失败","请首先链接互联网,错误代码=" & @error)
Exit
EndIf
 楼主| 发表于 2009-8-28 23:50:22 | 显示全部楼层
@echo off
@Setlocal ENABLEDELAYEDEXPANSION
@set reg_path_id=
@set reg_path=
@set nic_id=
@set nic_name=

@for /f "usebackq tokens=7 delims=\" %%i in (`reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards"`) do (
set reg_path_id=%%i
set "reg_path=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\!reg_path_id!"
for /f "usebackq tokens=3" %%j in (`"reg query "!reg_path!" | find /i "ServiceName""`) do (
set NIC_id=%%j
  for /f "usebackq skip=2 tokens=3" %%k in (`reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\!nic_id!" /v NTEContextList`) do (if not "%%k" == "\0" (Goto :nic_name))
))
Goto :EOF
:nic_name
@if exist %temp%\reg.temp (del /q %temp%\reg.temp >nul)
@reg export "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\%nic_id%\Connection" %temp%\reg.temp >nul
for /f "usebackq tokens=2 delims==" %%l in (`find /i "Name" %temp%\reg.temp`) do (
set nic_name=%%l
set nic_name=!nic_name:"=!
)
@if exist %temp%\reg.temp (del /q %temp%\reg.temp >nul)

echo 您的网卡连接名称为:%nic_name%
pause>nul
 楼主| 发表于 2009-8-28 23:50:46 | 显示全部楼层
如同上面批处理运行的结果。
发表于 2009-8-29 00:08:13 | 显示全部楼层
 楼主| 发表于 2009-8-29 00:12:04 | 显示全部楼层
MprConfigInterfaceEnum
http://msdn.microsoft.com/en-us/library/aa375862(VS.85).aspx
pusofalse 发表于 2009-8-29 00:08

C++看不懂呀!
 楼主| 发表于 2009-8-29 00:35:50 | 显示全部楼层
希望有人能更改批处理为我所用。
发表于 2009-8-29 00:59:11 | 显示全部楼层
WMI的Win32_NetworkAdapter,NetConnectionID应该也可以。
发表于 2009-8-29 03:23:37 | 显示全部楼层
#include <Array.au3>

CONST $tagMPRINTERFACE0 = "wchar Name[257];ptr Interface;int Enabled;int IfType;int State;dword UnreachabilityReasons;dword LastError"
$aInterface = _MprConfigInterfaceEnum()
_Arraydisplay($aInterface)

Func _MprConfigInterfaceEnum($sSystem = @ComputerName)
        Local $hMprCfg, $aResult[1][4] = [[0]], $tMPR, $pMPR

        $hMprCfg = _MprConfigServerConnect($sSystem)
        If $hMprCfg = 0 Then Return SetError(@error, 0, $aResult)

        $iResult = DllCall("Mprapi.dll", "long", "MprConfigInterfaceEnum", _
                        "long", $hMprCfg, "dword", 0, "ptr*", 0, "dword", -1, _
                        "dword*", 0, "dword*", 0, "dword*", 0)
        $pMPR = $iResult[3]
        $aResult[0][0] = $iResult[5]
        Redim $aResult[$iResult[5] + 1][4]
        For $i = 1 to $iResult[5]
                $tMPR = DllStructCreate($tagMPRINTERFACE0, $iResult[3])
                $aResult[$i][0] = DllStructGetData($tMPR, "Name")
                $aResult[$i][1] = _MprConfigGetFriendlyName($hMprCfg, $aResult[$i][0])
                $aResult[$i][2] = DllStructGetData($tMPR, "Enabled")
                $aResult[$i][3] = DllStructGetData($tMPR, "IfType")
                $iResult[3] += DllStructGetSize($tMPR)
        Next
        _MprConfigBufferFree($pMPR)
        _MprConfigServerDisconnect($hMprCfg)
        Return SetError($iResult[0], 0, $aResult)
EndFunc        ;==>_MprConfigInterfaceEnum
        
Func _MprConfigServerConnect($sSystem = @ComputerName)
        Local $hMprCfg
        If $sSystem = "" Then $sSystem = @ComputerName
        $hMprCfg = DllCall("Mprapi.dll", "long", "MprConfigServerConnect", _
                        "wstr", @ComputerName, "long*", 0)
        Return SetError($hMprCfg[0], 0, $hMprCfg[2])
EndFunc        ;==>_MprConfigServerConnect

Func _MprConfigBufferFree($pBuffer)
        Local $iResult
        $iResult = DllCall("Mprapi.dll", "long", "MprConfigBufferFree", "ptr", $pBuffer)
        Return $iResult[0] = 0
EndFunc        ;==>_MprConfigBufferFree

Func _MprConfigServerDisconnect($hMprCfg)
        DllCall("Mprapi.dll", "none", "MprConfigServerDisconnect", "long", $hMprCfg)
EndFunc        ;==>_MprConfigServerDisconnect

Func _MprConfigGetFriendlyName($hMprCfg, $sGUID)
        Local $iResult

        $iResult = DllCall("Mprapi.dll", "long", "MprConfigGetFriendlyName", _
                        "long", $hMprCfg, "wstr", $sGUID, "wstr", "", "int", 128)
        Return $iResult[3]
EndFunc        ;==>_MprConfigGetFriendlyName

评分

参与人数 1金钱 +2 收起 理由
redapple2008 + 2

查看全部评分

 楼主| 发表于 2009-8-29 07:57:58 | 显示全部楼层
#include

CONST $tagMPRINTERFACE0 = "wchar Name[257];ptr Interface;int Enabled;int IfType;int State;dword UnreachabilityReasons;dword LastError"
$aInterface = _MprConfigInterfaceEnum()
_Arraydisp ...
pusofalse 发表于 2009-8-29 03:23

测试正确.谢谢了.
 楼主| 发表于 2009-8-30 19:53:50 | 显示全部楼层
正在研究中.......................
 楼主| 发表于 2009-8-30 23:18:40 | 显示全部楼层
提不出来本地连接的变量.
发表于 2009-8-30 23:41:44 | 显示全部楼层
Re 13#:
说话不要说到一半好吧。你在11#说测试正确,又在13#说提取不到?那代码到底可不可以啊?另外,本地连接的变量是怎样的?不是要提取“本地连接”、“本地连接2”吗?
 楼主| 发表于 2009-8-31 00:36:38 | 显示全部楼层
Re 13#:
说话不要说到一半好吧。你在11#说测试正确,又在13#说提取不到?那代码到底可不可以啊?另外,本地连接的变量是怎样的?不是要提取“本地连接”、“本地连接2”吗?
pusofalse 发表于 2009-8-30 23:41

是要提取“本地连接”、“本地连接2”吗?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-28 00:24 , Processed in 0.076594 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表