It didn't work in Status. I plug the barcode device into the computer, it sees the device. but after removing the barcode device, when I refresh the list, I see it is still in the list. It disappears when I refresh the list again after 5 minutes. Why is that ?? Normally, when a USB device is plugged into the computer, the system detects and installs its hardware. When you disconnect the usb device, there is instant hardware change .. Why am I facing such a problem? how can i solve it?
My main purpose is that if the program I wrote detects the device whose HID / VID number is defined, it will allow the program to open. that is, the GUI will open. If a different device is plugged in, the program will not work if the HIDVID number is different. so it won't open gui. the purpose is to determine if the barcode device is installed and if the hıdvid number matches. To allow or not to open the gui accordingly.
this is the final code. I ask for your help.
Code: Select all
PnPSignedDriver := Win32_PnPSignedDriver()
Gui, Margin, 10, 10
Gui, Add, Edit, xm ym w550 hWndhEdt01 gSEARCH vEdt01
EM_SETCUEBANNER(hEdt01, "Search for HID\VID")
;~ Gui, Add, ListView, Grid Multi +HScroll AltSubmit xm y+10 gLV w550 h250 r20, % "Description|DeviceID|ClassGuid|CompatID|DeviceClass|DeviceName|DevLoader|DriverDate|DriverName|DriverVersion|FriendlyName|HardWareID|InfName|InstallDate|IsSigned|Location|Manufacturer|Name|PDO|DriverProviderName|Signer|Started|StartMode|Status|SystemCreationClassName|SystemName"
Gui, Add, ListView, Grid Multi +HScroll AltSubmit xm y+10 gLV w550 h250 r20, % "Description|DeviceID|Status"
;~ if (InStr(PnPSignedDriver[i].DeviceID, "HID\VID_0C2E&PID_1001&MI_01\8&1448ADA3&0&0000"))
;HID\VID_0483&PID_5741\7&30B9C82C&0&0000
for i, v in PnPSignedDriver
if (InStr(PnPSignedDriver[i].DeviceID, "HID\VID_"))
LV_Add("", PnPSignedDriver[i].Description, PnPSignedDriver[i].DeviceID, PnPSignedDriver[i].Status)
LV_ModifyCol()
;~ LV_Add("", PnPSignedDriver[i].Description, PnPSignedDriver[i].DeviceID, PnPSignedDriver[i].ClassGuid, PnPSignedDriver[i].CompatID, PnPSignedDriver[i].DeviceClass, PnPSignedDriver[i].DeviceName, PnPSignedDriver[i].DevLoader, PnPSignedDriver[i].DriverDate, PnPSignedDriver[i].DriverName, PnPSignedDriver[i].DriverVersion, PnPSignedDriver[i].FriendlyName, PnPSignedDriver[i].HardWareID, PnPSignedDriver[i].InfName, PnPSignedDriver[i].InstallDate, PnPSignedDriver[i].IsSigned, PnPSignedDriver[i].Location, PnPSignedDriver[i].Manufacturer, PnPSignedDriver[i].Name, PnPSignedDriver[i].PDO, PnPSignedDriver[i].DriverProviderName, PnPSignedDriver[i].Signer, PnPSignedDriver[i].Started, PnPSignedDriver[i].StartMode, PnPSignedDriver[i].Status, PnPSignedDriver[i].SystemCreationClassName, PnPSignedDriver[i].SystemName)
;~ LV_ModifyCol()
Gui, Add, Text, xm ym+285 w100, HID\VID
Gui, Add, Edit, xm ym+300 w550 hWndhEdt02 vEdt02
EM_SETCUEBANNER(hEdt02, "Listview Clicked Item HID\VID")
Gui, Add, Button, xm ym+330 w100 gHIDVIDKopyala, HID\VID Kopyala
Gui, Add, Button, xm+110 ym+330 w100 gYenile, Yenile
Gui, Add, Button, xm+220 ym+330 w100 gKontrolEt, Kontrol Et
Gui, Show, AutoSize
return
; ===============================================================================================================================
GuiEscape:
GuiClose:
ExitApp
Esc::
Yenile:
Reload
return
KontrolEt:
for i, v in PnPSignedDriver
if (InStr(PnPSignedDriver[i].DeviceID, "HID\VID_0C2E&PID_1001&MI_01\8&1448ADA3&0&0000"))
{ MsgBox, Cihaz bulundu
;~
}
return
HIDVIDKopyala:
clipboard := ""
clipboard := % Edt02
MsgBox, HID\VID Kopyalandı!
return
SEARCH:
Gui, Submit, NoHide
GuiControlGet, SearchField,, Edt01
GuiControl, -Redraw, MainLV01
LV_Delete()
for i, v in PnPSignedDriver
if (InStr(PnPSignedDriver[i].DeviceID, "HID\VID_")) && (InStr(PnPSignedDriver[i].DeviceID, SearchField))
LV_Add("", PnPSignedDriver[i].Description, PnPSignedDriver[i].DeviceID, PnPSignedDriver[i].Status)
;~ LV_Add("", PnPSignedDriver[i].Description, PnPSignedDriver[i].DeviceID, PnPSignedDriver[i].ClassGuid, PnPSignedDriver[i].CompatID, PnPSignedDriver[i].DeviceClass, PnPSignedDriver[i].DeviceName, PnPSignedDriver[i].DevLoader, PnPSignedDriver[i].DriverDate, PnPSignedDriver[i].DriverName, PnPSignedDriver[i].DriverVersion, PnPSignedDriver[i].FriendlyName, PnPSignedDriver[i].HardWareID, PnPSignedDriver[i].InfName, PnPSignedDriver[i].InstallDate, PnPSignedDriver[i].IsSigned, PnPSignedDriver[i].Location, PnPSignedDriver[i].Manufacturer, PnPSignedDriver[i].Name, PnPSignedDriver[i].PDO, PnPSignedDriver[i].DriverProviderName, PnPSignedDriver[i].Signer, PnPSignedDriver[i].Started, PnPSignedDriver[i].StartMode, PnPSignedDriver[i].Status, PnPSignedDriver[i].SystemCreationClassName, PnPSignedDriver[i].SystemName)
GuiControl, +Redraw, MainLV01
return
LV:
Gui, Submit, NoHide
RowNumber := LV_GetNext()
LV_GetText(Edt02, RowNumber, 2)
GuiControl,, Edt02, %Edt02%
return
; ===============================================================================================================================
; ===============================================================================================================================
Win32_PnPSignedDriver()
{
try
{
PnPSignedDriver := []
for objItem in ComObjGet("winmgmts:").ExecQuery("SELECT * FROM Win32_PnPSignedDriver")
{
PnPSignedDriver[A_Index, "Description"] := objItem.Description
PnPSignedDriver[A_Index, "DeviceID"] := objItem.DeviceID
;~ PnPSignedDriver[A_Index, "ClassGuid"] := objItem.ClassGuid
;~ PnPSignedDriver[A_Index, "CompatID"] := objItem.CompatID
;~ PnPSignedDriver[A_Index, "DeviceClass"] := objItem.DeviceClass
;~ PnPSignedDriver[A_Index, "DeviceName"] := objItem.DeviceName
;~ PnPSignedDriver[A_Index, "DevLoader"] := objItem.DevLoader
;~ PnPSignedDriver[A_Index, "DriverDate"] := objItem.DriverDate
;~ PnPSignedDriver[A_Index, "DriverName"] := objItem.DriverName
;~ PnPSignedDriver[A_Index, "DriverVersion"] := objItem.DriverVersion
;~ PnPSignedDriver[A_Index, "FriendlyName"] := objItem.FriendlyName
;~ PnPSignedDriver[A_Index, "HardWareID"] := objItem.HardWareID
;~ PnPSignedDriver[A_Index, "InfName"] := objItem.InfName
;~ PnPSignedDriver[A_Index, "InstallDate"] := objItem.InstallDate
;~ PnPSignedDriver[A_Index, "IsSigned"] := objItem.IsSigned
;~ PnPSignedDriver[A_Index, "Location"] := objItem.Location
;~ PnPSignedDriver[A_Index, "Manufacturer"] := objItem.Manufacturer
;~ PnPSignedDriver[A_Index, "Name"] := objItem.Name
;~ PnPSignedDriver[A_Index, "PDO"] := objItem.PDO
;~ PnPSignedDriver[A_Index, "DriverProviderName"] := objItem.DriverProviderName
;~ PnPSignedDriver[A_Index, "Signer"] := objItem.Signer
;~ PnPSignedDriver[A_Index, "Started"] := objItem.Started
;~ PnPSignedDriver[A_Index, "StartMode"] := objItem.StartMode
PnPSignedDriver[A_Index, "Status"] := objItem.Status
;~ PnPSignedDriver[A_Index, "SystemCreationClassName"] := objItem.SystemCreationClassName
;~ PnPSignedDriver[A_Index, "SystemName"] := objItem.SystemName
}
return PnPSignedDriver
}
return ""
}
EM_SETCUEBANNER(handle, string, option := true)
{
static ECM_FIRST := 0x1500
static EM_SETCUEBANNER := ECM_FIRST + 1
if (DllCall("user32\SendMessage", "ptr", handle, "uint", EM_SETCUEBANNER, "int", option, "str", string, "int"))
return true
return false
}