Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以使用.NET触发硬件刷新(又称设备管理器)?_.net_Api_Hardware_Device Manager - Fatal编程技术网

有没有一种方法可以使用.NET触发硬件刷新(又称设备管理器)?

有没有一种方法可以使用.NET触发硬件刷新(又称设备管理器)?,.net,api,hardware,device-manager,.net,Api,Hardware,Device Manager,我不介意这是否只在最新版本的Windows中才可能实现,但我想知道是否有一种方法可以使用.NET触发此操作: 找到了这段代码,它可以帮助您找到正确的方向。您需要将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

我不介意这是否只在最新版本的Windows中才可能实现,但我想知道是否有一种方法可以使用.NET触发此操作:


找到了这段代码,它可以帮助您找到正确的方向。您需要将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   
您将发现,在了解如何在.net代码中定义Win API函数时,它非常有用。