有没有办法触发使用.NET的硬件刷新(又名设备管理器)?

问题描述:

我不介意,如果它在Windows的最新版本是唯一可能的,但我想知道如果有一种方法来触发此使用.NET:有没有办法触发使用.NET的硬件刷新(又名设备管理器)?

Device Manager Hardware Refresh http://imgbag.com/josh/joshx/*/devicemanager.png?p=Rectangle(130,430,270,100,10,Yellow)

发现这段代码可能有助于指引你走向正确的方向。您需要将windows api添加到您的项目中,并模仿它:

#INCLUDE "Win32Api.inc" 
DECLARE FUNCTION fCM_Locate_DevNode (BYREF dvInst AS LONG, BYVAL n AS LONG, BYVAL c AS LONG) AS LONG 
DECLARE FUNCTION fCM_Reenumerate_DevNode (BYVAL dvInst AS LONG, BYVAL n AS LONG) AS LONG 

FUNCTION Scan_for_hardware_changes() AS LONG 

    %CR_SUCCESS = 0 
    %CM_LOCATE_DEVNODE_NORMAL = 0 

    LOCAL hLib AS LONG, pCM_DevNode AS DWORD, fSTATUS AS LONG, dvInst AS LONG 

    hLib = LoadLibrary("cfgmgr32.dll") 
    IF hLib THEN 
     pCM_DevNode = GetProcAddress(hLib, "CM_Locate_DevNodeA") 
     IF pCM_DevNode THEN 
      CALL DWORD pCM_DevNode USING fCM_Locate_DevNode(dvInst, 0, %CM_LOCATE_DEVNODE_NORMAL) TO fSTATUS 
      IF fSTATUS=%CR_SUCCESS THEN 
       pCM_DevNode = GetProcAddress(hLib, "CM_Reenumerate_DevNode") 
       IF pCM_DevNode THEN 
        CALL DWORD pCM_DevNode USING fCM_Reenumerate_DevNode(dvInst, 0) TO fSTATUS 
        IF fSTATUS=%CR_SUCCESS THEN FUNCTION=%TRUE 
       END IF 
      END IF 
     END IF 
     FreeLibrary hLib 
    END IF 

END FUNCTION 

FUNCTION PBMAIN 

    IF Scan_for_hardware_changes() THEN MSGBOX "OK!" ELSE MSGBOX "Sorry!" 

END FUNCTION 
+0

您会发现http://pinvoke.net/非常适用于确定如何在您的API中定义Win API函数。网络代码。 – 2009-09-22 09:02:53