Sign in to follow this  
Followers 0
Morthawt

How to get a parameter from a USB device > pic included

18 posts in this topic




If you're looking for a specific USB device, to see whether it is plugged in, I would suggest doing it through WMI:

$pc = @ComputerName
$WMI = ObjGet("winmgmts:" & $pc & "rootcimv2")
   If IsObj($WMI) Then
    $aUSB = $WMI.ExecQuery("Select * From Win32_USBDevice")
     For $element In $aUSB
      If StringInStr($element.Name, "Broadcom Usbccid") Then
       MsgBox(0, "", "Device Found")
       ExitLoop
      EndIf
     Next
   EndIf

√-1 2^3 ∑ π, and it was delicious!

Share this post


Link to post
Share on other sites

If you're looking for a specific USB device, to see whether it is plugged in, I would suggest doing it through WMI:

$pc = @ComputerName
$WMI = ObjGet("winmgmts:" & $pc & "rootcimv2")
If IsObj($WMI) Then
    $aUSB = $WMI.ExecQuery("Select * From Win32_USBDevice")
     For $element In $aUSB
     If StringInStr($element.Name, "Broadcom Usbccid") Then
     MsgBox(0, "", "Device Found")
     ExitLoop
     EndIf
     Next
EndIf

How can I utilize this to search for the parameter shown in the image? I don't know how to even begin to tweak it because I never use WMI because I know nothing about it or even how to start to learn it.

Share this post


Link to post
Share on other sites

I guess I'm curious why you would want to search on the Parent field rather than just the name of the device? I'm guessing it would be $element.Parent, but I will look into it more when I get into the office.


√-1 2^3 ∑ π, and it was delicious!

Share this post


Link to post
Share on other sites

I guess I'm curious why you would want to search on the Parent field rather than just the name of the device? I'm guessing it would be $element.Parent, but I will look into it more when I get into the office.

I have a Yubikey and its serial number shows up in the parent section, at the end of the string. The name of the device looks like a generic keyboard.

Share this post


Link to post
Share on other sites

maybe this will help?

Local $rtn = _IsKeyboardOnline('USBVID_046D');<-- partial search string
MsgBox(0, 'Return', $rtn)

Func _IsKeyboardOnline($SearchString)
    Local $objWMI = ObjGet('winmgmts:rootcimv2')
    If Not IsObj($objWMI) Then Return SetError(-1)

    Local $objClass = $objWMI.InstancesOf('Win32_Keyboard Where ConfigManagerErrorCode=0');<-- running instances only
    If Not $objClass.Count Then Return; <-- returns 0 when nothing was found running

    For $objItem In $objClass

        MsgBox(0, $objItem.Name, $objItem.PNPDeviceID);<-- for debug and visual only

        If StringInStr($objItem.PNPDeviceID, $SearchString) Then Return 1;<-- if found, return 1
    Next
EndFunc

"The mediocre teacher tells. The Good teacher explains. The superior teacher demonstrates. The great teacher inspires." -William Arthur Ward

Share this post


Link to post
Share on other sites

Glad it helped you!


"The mediocre teacher tells. The Good teacher explains. The superior teacher demonstrates. The great teacher inspires." -William Arthur Ward

Share this post


Link to post
Share on other sites

Thanks that does exactly what I need after a slight tweak. I have no idea how to create those kinds of things though :S

Search the Forum for Scriptomatic.

_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

I found it but a warning was on the page saying:

This file has been reported as broken because: It's asking for contants not defined in the GUIConstants #Include file it calls for.

Will that be a problem?

Share this post


Link to post
Share on other sites

Probably #includes have changed

look for things like #include <GUIConstants.au3> and change to <GUIConstantsEX.au3>.

And others of course, look at the names of undeclared, and try to determine what

#include they now belong to.


AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Share this post


Link to post
Share on other sites

Add this line to the top of the script and hit CTRL-F5, it will add in any includes needed for the constants.

#AutoIt3Wrapper_Add_Constants=y

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

Look in GEOSoft's signature.


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

Ok, after you initially open things up and write a line like

$objClass = $objWMI.InstancesOf('Win32_Keyboard Where ConfigManagerErrorCode=0')

Or in the case of a scriptomatic it did one like this

$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Keyboard", "WQL", _

$wbemFlagReturnImmediately + $wbemFlagForwardOnly)

What is the best way to learn about what ever step this is? It seems like there are other things like InstancesOf and they have ways of having things typed to access certain information. I don't know anything about that so I cannot even search for it because I have no idea what this step or phase is in the WMI process or how to find syntax/commands etc.

Share this post


Link to post
Share on other sites

#17 ·  Posted (edited)

Have you Googled "querying WMI"? The very first hit takes you to the WMI Glossary, where you can learn about some of these terms.

Edit: From there, you can even open the WMI Reference, which has a huge amount of info about working with WMI.

Edited by JLogan3o13

√-1 2^3 ∑ π, and it was delicious!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0