Office中国论坛/Access中国论坛

标题: [求助]如何实现控制双网卡的启用或禁用? [打印本页]

作者: aone    时间: 2006-5-18 19:12
标题: [求助]如何实现控制双网卡的启用或禁用?
我的电脑上有两块网卡,能否用Access控制启用网卡1禁用网卡2或者禁用网卡1而启用网卡2?请高手赐教!谢谢!
作者: LucasLynn    时间: 2006-5-18 19:14
用iphlpapi系列的函数。   
  先用GetIfTable()获得所有的网卡列表,然后用SetIfEntry()将指定的网卡启用或禁用。   
   
   
  GetIfTable   
  The   GetIfTable   function   retrieves   the   MIB-II   interface   table.   
   
  DWORD   GetIfTable(   
      PMIB_IFTABLE   pIfTable,     //   buffer   for   interface   table     
      PULONG   pdwSize,                   //   size   of   buffer   
      BOOL   bOrder                           //   sort   the   table   by   index?   
  );   
   
  SetIfEntry   
  Use   the   SetIfEntry   function   to   set   the   administrative   status   of   an   interface.   
   
  DWORD   SetIfEntry(     
      PMIB_IFROW   pIfRow     //   specifies   interface   and   status   
  );   


[此贴子已经被作者于2006-5-18 11:15:45编辑过]


作者: LucasLynn    时间: 2006-5-18 19:20
引用的库为iphlpapi.dll
作者: aone    时间: 2006-5-18 19:20
我是新手,这段代码对我来说很复杂,需要慢慢研究。能否再说详细点呢?谢谢版主这么快赐教!
作者: LucasLynn    时间: 2006-5-18 19:21
以下是引用aone在2006-5-18 11:20:00的发言:
我是新手,这段代码对我来说很复杂,需要慢慢研究。能否再说详细点呢?谢谢版主这么快赐教!





首先要使用VBA,在VBA中调用Windows API,接下去就是Windows API的编程了。






作者: aone    时间: 2006-5-18 19:29
那么要在VBA设置引用什么库吗?
作者: LucasLynn    时间: 2006-5-18 19:32
以下是引用aone在2006-5-18 11:29:00的发言:
那么要在VBA设置引用什么库吗?





不需要,但是需要在VBA代码中进行声明。具体方法请查询VB API调用的相关资料。







作者: aone    时间: 2006-5-18 19:36
谢谢版主!这就去试。
作者: LucasLynn    时间: 2006-5-18 19:41
以下是引用aone在2006-5-18 11:36:00的发言:
谢谢版主!这就去试。



需要用到的文档:

typedef struct _MIB_IFROW
{
WCHAR wszName[MAX_INTERFACE_NAME_LEN];
DWORD dwIndex;
DWORD dwType;
DWORD dwMtu;
DWORD dwSpeed;
DWORD dwPhysAddrLen;
BYTE bPhysAddr[MAXLEN_PHYSADDR];
DWORD dwAdminStatus;
DWORD dwOperStatus;
DWORD dwLastChange;
DWORD dwInOctets;
DWORD dwInUcastPkts;
DWORD dwInNUcastPkts;
DWORD dwInDiscards;
DWORD dwInErrors;
DWORD dwInUnknownProtos;
DWORD dwOutOctets;
DWORD dwOutUcastPkts;
DWORD dwOutNUcastPkts;
DWORD dwOutDiscards;
DWORD dwOutErrors;
DWORD dwOutQLen;
DWORD dwDescrLen;
BYTE bDescr[MAXLEN_IFDESCR];
} MIB_IFROW,*PMIB_IFROW;

typedef struct _MIB_IFTABLE
{
DWORD dwNumEntries;
MIB_IFROW table[ANY_SIZE];
} MIB_IFTABLE, *PMIB_IFTABLE;

作者: LucasLynn    时间: 2006-5-18 19:44
下面这个网址的文章供你参考:



http://211.147.7.6:9999/flyfish/display.asp?id=1200000000000000000000026










欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3