.NET을 사용하여 하드웨어 새로 고침 (일명 장치 관리자)을 트리거하는 방법이 있습니까?
-
12-09-2019 - |
문제
최신 버전의 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
제휴하지 않습니다 StackOverflow