هل هناك طريقة لتشغيل جهاز تحديث الأجهزة (AKA Device Manager) باستخدام .NET؟

StackOverflow https://stackoverflow.com/questions/1458893

سؤال

لا أمانع إذا كان ذلك ممكنا فقط في أحدث إصدار من Windows، لكنني أتساءل عما إذا كان هناك طريقة لتشغيل هذا باستخدام .NET:

تحديث أجهزة إدارة الأجهزة http://imgbag.com/josh/joshx/stackoverflow/devicemanager.png؟p=Rectivle(130،430،270،100،10Y

هل كانت مفيدة؟

المحلول

وجدت هذه القطعة من التعليمات البرمجية التي يمكن أن تساعد في الإشارة إليك في الاتجاه الصحيح. ستحتاج إلى إضافة 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   
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top