#module WMImodule
#uselib "ole32.dll"
#func CoSetProxyBlanket "CoSetProxyBlanket" comobj,int,int,int,int,int,int,int
#define IID_IWbemLocator "{dc12a687-737f-11cf-884d-00aa004b2e24}"
#define CLSID_WbemLocator "{4590f811-1d3a-11d0-891f-00aa004b2e24}"
#usecom IWbemLocator IID_IWbemLocator CLSID_WbemLocator
#comfunc WbemLoc_ConnectServer 3 wstr,int,int,int,int,int,int,var
#define IID_IWbemServices "{9556dc99-828c-11cf-a37e-00aa003240c7}"
#define CLSID_WbemServices "{D68AF00A-29cb-43fa-8504-ce99a996d9ea}"
#usecom IWbemServices IID_IWbemServices CLSID_WbemServices
#comfunc WbemSvc_ExecQuery 20 wstr,wstr,int,int,var
#define IID_IEnumWbemClassObject "{027947e1-d731-11ce-a357-000000000001}"
#define CLSID_EnumWbemClassObject "{1b1cad8c-2dab-11d2-b604-00104b703efd}"
#usecom IEnumWbemClassObject IID_IEnumWbemClassObject CLSID_EnumWbemClassObject
#comfunc EnumWbem_Reset 3
#comfunc EnumWbem_Next 4 int,int,var,var
#define IID_IWbemClassObject "{dc12a681-737f-11cf-884d-00aa004b2e24}"
#define CLSID_WbemClassObject "{9A653086-174F-11d2-B5F9-00104B703EFD}"
#usecom IWbemClassObject IID_IWbemClassObject IID_IWbemClassObject
#comfunc WbemClsObj_Get 4 wstr,int,var,int,int
#deffunc GetWMIData array data,str query,str type
newcom pLoc, IWbemLocator
if( stat == 0 ){
WbemLoc_ConnectServer pLoc, "root\\cimv2", 0, 0, 0, 0, 0, 0, ppSvc
if( stat == 0 ){
newcom pSvc, IWbemServices, -1, ppSvc
if( stat == 0 ){
CoSetProxyBlanket pSvc,10,0,0,3,3,0,0
if( stat == 0 ){
WbemSvc_ExecQuery pSvc, "WQL", query, 48, 0, ppEnum
if( stat == 0 ){
newcom pEnum, IEnumWbemClassObject, -1, ppEnum
if( stat == 0 ){
dimtype vRet, vartype("variant")
repeat
EnumWbem_Next pEnum, -1, 1, ppclsObj, uReturn
if( uReturn == 0 ) : c = cnt : break
newcom pclsObj, IWbemClassObject, -1, ppclsObj
if( stat == 0 ){
WbemClsObj_Get pclsObj, type, 0, vRet, 0, 0
data(cnt) = vRet("value")
delcom pclsObj
}
loop
delcom pEnum
}
}
}
delcom pSvc
}
}
delcom pLoc
}
return c
#global
sdim nMouse, 64 : sdim nKeyboad, 64
GetWMIData nMouse, "Select * from Win32_PointingDevice", "Name"
mes ""+stat+" つのマウス/ポインティングデバイスが見つかりました。"
GetWMIData nKeyboad, "Select * from Win32_Keyboard", "Name"
mes ""+stat+" つのキーボードデバイスが見つかりました。"
以下のサイトを参考にしました。
モジュール内を一部書き換えて使っています。
stat に 取得した数が入るようにしています。
length()だとデバイスがなくても1が返ってきてしまうためです。
http://blog.goo.ne.jp/hiro239415/e/b0fb4ec697b8dbb34645f9600f4fac9a