Commit d6cd8f135e7c62b68af86e98f0108224d795e41e
1 parent
78a93534
Exists in
master
Classe wmi
Showing
15 changed files
with
202 additions
and
188 deletions
Show diff stats
cacic-teste/cacic-teste.pro
| @@ -29,6 +29,7 @@ SOURCES += \ | @@ -29,6 +29,7 @@ SOURCES += \ | ||
| 29 | ../src/vqtconvert.cpp \ | 29 | ../src/vqtconvert.cpp \ |
| 30 | ../src/vregistry.cpp \ | 30 | ../src/vregistry.cpp \ |
| 31 | ../src/ccoleta.cpp \ | 31 | ../src/ccoleta.cpp \ |
| 32 | + ../src/wmi.cpp \ | ||
| 32 | # ../src/qtservice/src/qtservice.cpp \ | 33 | # ../src/qtservice/src/qtservice.cpp \ |
| 33 | # ../src/qtservice/src/qtservice_unix.cpp \ | 34 | # ../src/qtservice/src/qtservice_unix.cpp \ |
| 34 | # ../src/qtservice/src/qtservice_win.cpp \ | 35 | # ../src/qtservice/src/qtservice_win.cpp \ |
| @@ -48,6 +49,7 @@ HEADERS += \ | @@ -48,6 +49,7 @@ HEADERS += \ | ||
| 48 | ../src/vqtconvert.h \ | 49 | ../src/vqtconvert.h \ |
| 49 | ../src/vregistry.h \ | 50 | ../src/vregistry.h \ |
| 50 | ../src/ccoleta.h \ | 51 | ../src/ccoleta.h \ |
| 52 | + ../src/wmi.h \ | ||
| 51 | # ../src/qtservice/src/qtservice.h \ | 53 | # ../src/qtservice/src/qtservice.h \ |
| 52 | # ../src/qtservice/src/qtservice_p.h \ | 54 | # ../src/qtservice/src/qtservice_p.h \ |
| 53 | # ../src/qtservice/src/qtunixserversocket.h \ | 55 | # ../src/qtservice/src/qtunixserversocket.h \ |
cacicD/cacicD.pro
cacicD/cacicd.cpp
| @@ -4,7 +4,7 @@ cacicD::cacicD(int argc, char **argv) : QtService<QCoreApplication>(argc, argv, | @@ -4,7 +4,7 @@ cacicD::cacicD(int argc, char **argv) : QtService<QCoreApplication>(argc, argv, | ||
| 4 | { | 4 | { |
| 5 | try{ | 5 | try{ |
| 6 | setServiceDescription("Cacic Daemon"); | 6 | setServiceDescription("Cacic Daemon"); |
| 7 | - setServiceFlags(QtServiceBase::CannotBeStopped); | 7 | + setServiceFlags(QtService::Default); |
| 8 | } catch (...){ | 8 | } catch (...){ |
| 9 | qCritical() << "Error desconhecido no construtor."; | 9 | qCritical() << "Error desconhecido no construtor."; |
| 10 | } | 10 | } |
gercols/gercols.pro
| @@ -34,6 +34,7 @@ SOURCES += \ | @@ -34,6 +34,7 @@ SOURCES += \ | ||
| 34 | ./gercols.cpp \ | 34 | ./gercols.cpp \ |
| 35 | ../src/vregistry.cpp \ | 35 | ../src/vregistry.cpp \ |
| 36 | ../src/vqtconvert.cpp \ | 36 | ../src/vqtconvert.cpp \ |
| 37 | + ../src/wmi.cpp \ | ||
| 37 | 38 | ||
| 38 | HEADERS += \ | 39 | HEADERS += \ |
| 39 | ../src/ccacic.h \ | 40 | ../src/ccacic.h \ |
| @@ -46,6 +47,7 @@ HEADERS += \ | @@ -46,6 +47,7 @@ HEADERS += \ | ||
| 46 | ./gercols.h \ | 47 | ./gercols.h \ |
| 47 | ../src/vregistry.h \ | 48 | ../src/vregistry.h \ |
| 48 | ../src/vqtconvert.h \ | 49 | ../src/vqtconvert.h \ |
| 50 | + ../src/wmi.h \ | ||
| 49 | 51 | ||
| 50 | INCLUDEPATH += ../src \ | 52 | INCLUDEPATH += ../src \ |
| 51 | ../src/crypto++/include/ | 53 | ../src/crypto++/include/ |
gercols/main.cpp
| @@ -4,6 +4,7 @@ | @@ -4,6 +4,7 @@ | ||
| 4 | int main(int argc, char *argv[]) | 4 | int main(int argc, char *argv[]) |
| 5 | { | 5 | { |
| 6 | QCoreApplication a(argc, argv); | 6 | QCoreApplication a(argc, argv); |
| 7 | + a.setApplicationName("Gercols"); | ||
| 7 | 8 | ||
| 8 | //crio o objeto que será responsável pela execução | 9 | //crio o objeto que será responsável pela execução |
| 9 | Gercols *oGercols = new Gercols(&a); | 10 | Gercols *oGercols = new Gercols(&a); |
install-cacic/install-cacic.pro.user
| 1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <!DOCTYPE QtCreatorProject> | 2 | <!DOCTYPE QtCreatorProject> |
| 3 | -<!-- Written by QtCreator 3.1.2, 2014-08-29T15:37:15. --> | 3 | +<!-- Written by QtCreator 3.1.2, 2014-09-01T17:24:48. --> |
| 4 | <qtcreator> | 4 | <qtcreator> |
| 5 | <data> | 5 | <data> |
| 6 | <variable>ProjectExplorer.Project.ActiveTarget</variable> | 6 | <variable>ProjectExplorer.Project.ActiveTarget</variable> |
src/cacic_computer.cpp
| @@ -14,11 +14,11 @@ CACIC_Computer::CACIC_Computer() | @@ -14,11 +14,11 @@ CACIC_Computer::CACIC_Computer() | ||
| 14 | * | 14 | * |
| 15 | */ | 15 | */ |
| 16 | QList<QVariantMap> CACIC_Computer::networkInterfacesRunning(){ | 16 | QList<QVariantMap> CACIC_Computer::networkInterfacesRunning(){ |
| 17 | - QNetworkInterface interface; | 17 | + QNetworkInterface netInterface; |
| 18 | QVariantMap mapInterface; | 18 | QVariantMap mapInterface; |
| 19 | QList<QVariantMap> listaMap; | 19 | QList<QVariantMap> listaMap; |
| 20 | 20 | ||
| 21 | - foreach (QNetworkInterface in, interface.allInterfaces()) { | 21 | + foreach (QNetworkInterface in, netInterface.allInterfaces()) { |
| 22 | if (!(bool)(in.flags() & QNetworkInterface::IsLoopBack) && | 22 | if (!(bool)(in.flags() & QNetworkInterface::IsLoopBack) && |
| 23 | !(bool)(in.flags() & QNetworkInterface::IsPointToPoint) && | 23 | !(bool)(in.flags() & QNetworkInterface::IsPointToPoint) && |
| 24 | (bool)(in.flags() & QNetworkInterface::IsRunning)){ | 24 | (bool)(in.flags() & QNetworkInterface::IsRunning)){ |
src/cacic_hardware.cpp
| @@ -16,133 +16,137 @@ QJsonObject cacic_hardware::coletaWin() | @@ -16,133 +16,137 @@ QJsonObject cacic_hardware::coletaWin() | ||
| 16 | { | 16 | { |
| 17 | QJsonObject hardware; | 17 | QJsonObject hardware; |
| 18 | QStringList params; | 18 | QStringList params; |
| 19 | - QJsonValue wmi; | 19 | + QJsonValue wmiResult; |
| 20 | // Win32_ComputerSystem (Caption, Description, Domain, DNSHostName, Manufacturer, | 20 | // Win32_ComputerSystem (Caption, Description, Domain, DNSHostName, Manufacturer, |
| 21 | // Model, Name, PrimaryOwnerName, TotalPhysicalMemory, Workgroup) | 21 | // Model, Name, PrimaryOwnerName, TotalPhysicalMemory, Workgroup) |
| 22 | params << "Caption" << "Description" << "Domain" << "DNSHostName" << "Manufacturer" << "Model" | 22 | params << "Caption" << "Description" << "Domain" << "DNSHostName" << "Manufacturer" << "Model" |
| 23 | << "Name" << "PrimaryOwnerName" << "TotalPhysicalMemory" << "Workgroup"; | 23 | << "Name" << "PrimaryOwnerName" << "TotalPhysicalMemory" << "Workgroup"; |
| 24 | - wmi = wmiSearch("Win32_ComputerSystem", params); | ||
| 25 | - if (!wmi.isNull()) | ||
| 26 | - hardware["ComputerSystem"] = wmi; | 24 | + wmiResult = wmi::wmiSearch("Win32_ComputerSystem", params); |
| 25 | + if (!wmiResult.isNull()) | ||
| 26 | + hardware["ComputerSystem"] = wmiResult; | ||
| 27 | //Win32_PortableBattery | 27 | //Win32_PortableBattery |
| 28 | // (Verifica se é notebook) | 28 | // (Verifica se é notebook) |
| 29 | params.clear(); | 29 | params.clear(); |
| 30 | - hardware["IsNotebook"] = QJsonValue::fromVariant(!wmiSearch("Win32_PortableBattery", params).isNull()); | 30 | + wmiResult = wmi::wmiSearch("Win32_PortableBattery", params); |
| 31 | + if (!wmiResult.isNull()){ | ||
| 32 | + hardware["IsNotebook"] = QJsonValue::fromVariant(!wmiResult.isNull()); | ||
| 33 | + hardware["PortableBattery"] = wmiResult; | ||
| 34 | + } | ||
| 31 | //Win32_Bios | 35 | //Win32_Bios |
| 32 | // (Manufacturer, SMBIOSBIOSVersion, BIOSVersion, Version, SerialNumber, ReleaseDate) | 36 | // (Manufacturer, SMBIOSBIOSVersion, BIOSVersion, Version, SerialNumber, ReleaseDate) |
| 33 | params.clear(); | 37 | params.clear(); |
| 34 | params << "Manufacturer" << "SMBIOSBIOSVersion" << "BIOSVersion" << "Version" << "SerialNumber" << "ReleaseDate"; | 38 | params << "Manufacturer" << "SMBIOSBIOSVersion" << "BIOSVersion" << "Version" << "SerialNumber" << "ReleaseDate"; |
| 35 | - wmi = wmiSearch("Win32_Bios", params); | ||
| 36 | - if (!wmi.isNull()) | ||
| 37 | - hardware["Bios"] = wmi; | 39 | + wmiResult = wmi::wmiSearch("Win32_Bios", params); |
| 40 | + if (!wmiResult.isNull()) | ||
| 41 | + hardware["Bios"] = wmiResult; | ||
| 38 | //Win32_BaseBoard | 42 | //Win32_BaseBoard |
| 39 | // (Manufacturer, Model, SerialNumber) | 43 | // (Manufacturer, Model, SerialNumber) |
| 40 | params.clear(); | 44 | params.clear(); |
| 41 | params << "Manufacturer" << "Model" << "SerialNumber"; | 45 | params << "Manufacturer" << "Model" << "SerialNumber"; |
| 42 | - wmi = wmiSearch("Win32_Baseboard", params); | ||
| 43 | - if (!wmi.isNull()) | ||
| 44 | - hardware["BaseBoard"] = wmi; | 46 | + wmiResult = wmi::wmiSearch("Win32_Baseboard", params); |
| 47 | + if (!wmiResult.isNull()) | ||
| 48 | + hardware["BaseBoard"] = wmiResult; | ||
| 45 | //Win32_SystemEnclosure | 49 | //Win32_SystemEnclosure |
| 46 | // (Manufacturer, ChassisTypes, SerialNumber, SMBIOSAssetTag) | 50 | // (Manufacturer, ChassisTypes, SerialNumber, SMBIOSAssetTag) |
| 47 | params.clear(); | 51 | params.clear(); |
| 48 | params << "Manufacturer" << "ChassisTypes" << "SerialNumber" << "SMBIOSAssetTag"; | 52 | params << "Manufacturer" << "ChassisTypes" << "SerialNumber" << "SMBIOSAssetTag"; |
| 49 | - wmi = wmiSearch("Win32_SystemEnclosure", params); | ||
| 50 | - if (!wmi.isNull()) | ||
| 51 | - hardware["SystemEnclosure"] = wmi; | 53 | + wmiResult = wmi::wmiSearch("Win32_SystemEnclosure", params); |
| 54 | + if (!wmiResult.isNull()) | ||
| 55 | + hardware["SystemEnclosure"] = wmiResult; | ||
| 52 | //Win32_FloppyDrive | 56 | //Win32_FloppyDrive |
| 53 | // (Manufacturer, Caption, Description, Name, MediaType, Size) | 57 | // (Manufacturer, Caption, Description, Name, MediaType, Size) |
| 54 | params.clear(); | 58 | params.clear(); |
| 55 | params << "Manufacturer" << "Caption" << "Description" << "Name"; | 59 | params << "Manufacturer" << "Caption" << "Description" << "Name"; |
| 56 | - wmi = wmiSearch("Win32_FloppyDrive", params); | ||
| 57 | - if (!wmi.isNull()) | ||
| 58 | - hardware["FloppyDrive"] = wmi; | 60 | + wmiResult = wmi::wmiSearch("Win32_FloppyDrive", params); |
| 61 | + if (!wmiResult.isNull()) | ||
| 62 | + hardware["FloppyDrive"] = wmiResult; | ||
| 59 | //Win32_DiskDrive | 63 | //Win32_DiskDrive |
| 60 | // (Manufacturer, Caption, Description, Name, MediaType, Size, SerialNumber, Model, FirmwareRevision) | 64 | // (Manufacturer, Caption, Description, Name, MediaType, Size, SerialNumber, Model, FirmwareRevision) |
| 61 | params.clear(); | 65 | params.clear(); |
| 62 | params << "Manufacturer" << "Caption" << "Description" << "Name" << "MediaType" << "Size" << "SerialNumber" | 66 | params << "Manufacturer" << "Caption" << "Description" << "Name" << "MediaType" << "Size" << "SerialNumber" |
| 63 | << "Model" << "FirmwareRevision"; | 67 | << "Model" << "FirmwareRevision"; |
| 64 | - wmi = wmiSearch("Win32_DiskDrive", params); | ||
| 65 | - if (!wmi.isNull()) | ||
| 66 | - hardware["DiskDrive"] = wmi; | 68 | + wmiResult = wmi::wmiSearch("Win32_DiskDrive", params); |
| 69 | + if (!wmiResult.isNull()) | ||
| 70 | + hardware["DiskDrive"] = wmiResult; | ||
| 67 | //Win32_CDROMDrive | 71 | //Win32_CDROMDrive |
| 68 | // (Manufacturer, Caption, Description, Name, MediaType, Size) | 72 | // (Manufacturer, Caption, Description, Name, MediaType, Size) |
| 69 | params.clear(); | 73 | params.clear(); |
| 70 | params << "Manufacturer" << "Caption" << "Description" << "MediaType" << "Name" << "Size"; | 74 | params << "Manufacturer" << "Caption" << "Description" << "MediaType" << "Name" << "Size"; |
| 71 | - wmi = wmiSearch("Win32_CDROMDrive", params); | ||
| 72 | - if (!wmi.isNull()) | ||
| 73 | - hardware["CDROMDrive"] = wmi; | 75 | + wmiResult = wmi::wmiSearch("Win32_CDROMDrive", params); |
| 76 | + if (!wmiResult.isNull()) | ||
| 77 | + hardware["CDROMDrive"] = wmiResult; | ||
| 74 | //Win32_FloppyController | 78 | //Win32_FloppyController |
| 75 | // (Manufacturer, Caption, Description, Name) | 79 | // (Manufacturer, Caption, Description, Name) |
| 76 | params.clear(); | 80 | params.clear(); |
| 77 | params << "Manufacturer" << "Caption" << "Description" << "Name"; | 81 | params << "Manufacturer" << "Caption" << "Description" << "Name"; |
| 78 | - wmi = wmiSearch("Win32_FloppyController", params); | ||
| 79 | - if (!wmi.isNull()) | ||
| 80 | - hardware["FloppyController"] = wmi; | 82 | + wmiResult = wmi::wmiSearch("Win32_FloppyController", params); |
| 83 | + if (!wmiResult.isNull()) | ||
| 84 | + hardware["FloppyController"] = wmiResult; | ||
| 81 | //Win32_SCSIController | 85 | //Win32_SCSIController |
| 82 | // (Manufacturer, Caption, Description, Name, HardwareVersion) | 86 | // (Manufacturer, Caption, Description, Name, HardwareVersion) |
| 83 | params.clear(); | 87 | params.clear(); |
| 84 | params << "Manufacturer" << "Caption" << "Description" << "Name" << "HardwareVersion"; | 88 | params << "Manufacturer" << "Caption" << "Description" << "Name" << "HardwareVersion"; |
| 85 | - wmi = wmiSearch("Win32_SCSIController", params); | ||
| 86 | - if (!wmi.isNull()) | ||
| 87 | - hardware["SCSIController"] = wmi; | 89 | + wmiResult = wmi::wmiSearch("Win32_SCSIController", params); |
| 90 | + if (!wmiResult.isNull()) | ||
| 91 | + hardware["SCSIController"] = wmiResult; | ||
| 88 | //Win32_InfraredDevice | 92 | //Win32_InfraredDevice |
| 89 | // (Manufacturer, Caption, Description, Name) | 93 | // (Manufacturer, Caption, Description, Name) |
| 90 | params.clear(); | 94 | params.clear(); |
| 91 | params << "Manufacturer" << "Caption" << "Description" << "Name"; | 95 | params << "Manufacturer" << "Caption" << "Description" << "Name"; |
| 92 | - wmi = wmiSearch("Win32_InfraredDevice", params); | ||
| 93 | - if (!wmi.isNull()) | ||
| 94 | - hardware["InfraredDevice"] = wmi; | 96 | + wmiResult = wmi::wmiSearch("Win32_InfraredDevice", params); |
| 97 | + if (!wmiResult.isNull()) | ||
| 98 | + hardware["InfraredDevice"] = wmiResult; | ||
| 95 | //Win32_USBController | 99 | //Win32_USBController |
| 96 | // (Manufacturer, Caption, Description, Name) | 100 | // (Manufacturer, Caption, Description, Name) |
| 97 | params.clear(); | 101 | params.clear(); |
| 98 | params << "Manufacturer" << "Caption" << "Description" << "Name"; | 102 | params << "Manufacturer" << "Caption" << "Description" << "Name"; |
| 99 | - wmi = wmiSearch("Win32_USBController", params); | ||
| 100 | - if (!wmi.isNull()) | ||
| 101 | - hardware["USBController"] = wmi; | 103 | + wmiResult = wmi::wmiSearch("Win32_USBController", params); |
| 104 | + if (!wmiResult.isNull()) | ||
| 105 | + hardware["USBController"] = wmiResult; | ||
| 102 | //Win32_PCMCIAController | 106 | //Win32_PCMCIAController |
| 103 | // (Manufacturer, Caption, Description, Name) | 107 | // (Manufacturer, Caption, Description, Name) |
| 104 | params.clear(); | 108 | params.clear(); |
| 105 | params << "Manufacturer" << "Caption" << "Description" << "Name"; | 109 | params << "Manufacturer" << "Caption" << "Description" << "Name"; |
| 106 | - wmi = wmiSearch("Win32_PCMCIAController", params); | ||
| 107 | - if (!wmi.isNull()) | ||
| 108 | - hardware["PCMCIAController"] = wmi; | 110 | + wmiResult = wmi::wmiSearch("Win32_PCMCIAController", params); |
| 111 | + if (!wmiResult.isNull()) | ||
| 112 | + hardware["PCMCIAController"] = wmiResult; | ||
| 109 | //Win32_VideoController | 113 | //Win32_VideoController |
| 110 | // (Description, VideoProcessor, AdapterRAM, CurrentHorizontalResolution, CurrentVerticalResolution, Caption, Name) | 114 | // (Description, VideoProcessor, AdapterRAM, CurrentHorizontalResolution, CurrentVerticalResolution, Caption, Name) |
| 111 | params.clear(); | 115 | params.clear(); |
| 112 | params << "VideoProcessor" << "AdapterRAM" << "Description" << "Name" << "CurrentHorizontalResolution" | 116 | params << "VideoProcessor" << "AdapterRAM" << "Description" << "Name" << "CurrentHorizontalResolution" |
| 113 | << "CurrentVerticalResolution" << "Caption" << "AcceleratorCapabilities"; | 117 | << "CurrentVerticalResolution" << "Caption" << "AcceleratorCapabilities"; |
| 114 | - wmi = wmiSearch("Win32_VideoController", params); | ||
| 115 | - if (!wmi.isNull()) | ||
| 116 | - hardware["VideoController"] = wmi; | 118 | + wmiResult = wmi::wmiSearch("Win32_VideoController", params); |
| 119 | + if (!wmiResult.isNull()) | ||
| 120 | + hardware["VideoController"] = wmiResult; | ||
| 117 | //Win32_DesktopMonitor | 121 | //Win32_DesktopMonitor |
| 118 | // (MonitorManufacturer, Caption, Description, MonitorType, Name) | 122 | // (MonitorManufacturer, Caption, Description, MonitorType, Name) |
| 119 | params.clear(); | 123 | params.clear(); |
| 120 | params << "MonitorManufacturer" << "Caption" << "Description" << "MonitorType" << "Name"; | 124 | params << "MonitorManufacturer" << "Caption" << "Description" << "MonitorType" << "Name"; |
| 121 | - wmi = wmiSearch("Win32_DesktopMonitor", params); | ||
| 122 | - if (!wmi.isNull()) | ||
| 123 | - hardware["DesktopMonitor"] = wmi; | 125 | + wmiResult = wmi::wmiSearch("Win32_DesktopMonitor", params); |
| 126 | + if (!wmiResult.isNull()) | ||
| 127 | + hardware["DesktopMonitor"] = wmiResult; | ||
| 124 | //Win32_Printer | 128 | //Win32_Printer |
| 125 | // (Name, DriverName, PortName, ServerName, ShareName, HorizontalResolution, VerticalResolution, Comment, Shared, Network) | 129 | // (Name, DriverName, PortName, ServerName, ShareName, HorizontalResolution, VerticalResolution, Comment, Shared, Network) |
| 126 | params.clear(); | 130 | params.clear(); |
| 127 | params << "Name" << "DriverName" << "PortName" << "ServerName" << "ShareName" << "HorizontalResolution" | 131 | params << "Name" << "DriverName" << "PortName" << "ServerName" << "ShareName" << "HorizontalResolution" |
| 128 | << "VerticalResolution" << "Comment" << "Shared" << "Network"; | 132 | << "VerticalResolution" << "Comment" << "Shared" << "Network"; |
| 129 | - wmi = wmiSearch("Win32_Printer", params); | ||
| 130 | - if (!wmi.isNull()) | ||
| 131 | - hardware["Printer"] = wmi; | 133 | + wmiResult = wmi::wmiSearch("Win32_Printer", params); |
| 134 | + if (!wmiResult.isNull()) | ||
| 135 | + hardware["Printer"] = wmiResult; | ||
| 132 | //Win32_PortConnector | 136 | //Win32_PortConnector |
| 133 | // (ExternalReferenceDesignator, PortType (verificar), ConnectorType (verificar), Manufacturer, Caption, Name) | 137 | // (ExternalReferenceDesignator, PortType (verificar), ConnectorType (verificar), Manufacturer, Caption, Name) |
| 134 | params.clear(); | 138 | params.clear(); |
| 135 | params << "ExternalReferenceDesignator" << "PortType" << "ConnectorType" << "Name" << "Caption" << "Manufacturer"; | 139 | params << "ExternalReferenceDesignator" << "PortType" << "ConnectorType" << "Name" << "Caption" << "Manufacturer"; |
| 136 | - wmi = wmiSearch("Win32_PortConnector", params); | ||
| 137 | - if (!wmi.isNull()) | ||
| 138 | - hardware["PortConnector"] = wmi; | 140 | + wmiResult = wmi::wmiSearch("Win32_PortConnector", params); |
| 141 | + if (!wmiResult.isNull()) | ||
| 142 | + hardware["PortConnector"] = wmiResult; | ||
| 139 | //Win32_SerialPort | 143 | //Win32_SerialPort |
| 140 | // (Name, Caption, Description, StatusInfo) | 144 | // (Name, Caption, Description, StatusInfo) |
| 141 | params.clear(); | 145 | params.clear(); |
| 142 | params << "Name" << "Caption" << "Description" << "StatusInfo"; | 146 | params << "Name" << "Caption" << "Description" << "StatusInfo"; |
| 143 | - wmi = wmiSearch("Win32_SerialPort", params); | ||
| 144 | - if (!wmi.isNull()) | ||
| 145 | - hardware["SerialPort"] = wmi; | 147 | + wmiResult = wmi::wmiSearch("Win32_SerialPort", params); |
| 148 | + if (!wmiResult.isNull()) | ||
| 149 | + hardware["SerialPort"] = wmiResult; | ||
| 146 | //Win32_Processor | 150 | //Win32_Processor |
| 147 | // (MaxClockSpeed, Name, Architecture, NumberOfCores, SocketDesignation, Manufacturer, Architecture, NumberOfCores | 151 | // (MaxClockSpeed, Name, Architecture, NumberOfCores, SocketDesignation, Manufacturer, Architecture, NumberOfCores |
| 148 | // CurrentClockSpeed, MaxClockSpeed, L2CacheSize, AddressWidth, DataWidth, VoltageCaps, CpuStatus, | 152 | // CurrentClockSpeed, MaxClockSpeed, L2CacheSize, AddressWidth, DataWidth, VoltageCaps, CpuStatus, |
| @@ -151,154 +155,64 @@ QJsonObject cacic_hardware::coletaWin() | @@ -151,154 +155,64 @@ QJsonObject cacic_hardware::coletaWin() | ||
| 151 | params << "MaxClockSpeed" << "Name" << "Architecture" << "NumberOfCores" << "SocketDesignation" << "Manufacturer" | 155 | params << "MaxClockSpeed" << "Name" << "Architecture" << "NumberOfCores" << "SocketDesignation" << "Manufacturer" |
| 152 | << "Architecture" << "NumberOfCores" << "CurrentClockSpeed" << "MaxClockSpeed" << "L2CacheSize" << "AddressWidth" | 156 | << "Architecture" << "NumberOfCores" << "CurrentClockSpeed" << "MaxClockSpeed" << "L2CacheSize" << "AddressWidth" |
| 153 | << "DataWidth" << "VoltageCaps" << "CpuStatus" << "ProcessorId" << "UniqueId" << "AddressWidth"; | 157 | << "DataWidth" << "VoltageCaps" << "CpuStatus" << "ProcessorId" << "UniqueId" << "AddressWidth"; |
| 154 | - wmi = wmiSearch("Win32_Processor", params); | ||
| 155 | - if (!wmi.isNull()) | ||
| 156 | - hardware["Processor"] = wmi; | 158 | + wmiResult = wmi::wmiSearch("Win32_Processor", params); |
| 159 | + if (!wmiResult.isNull()) | ||
| 160 | + hardware["Processor"] = wmiResult; | ||
| 157 | //Win32_OperatingSystem | 161 | //Win32_OperatingSystem |
| 158 | // (Name, Version, CSDVersion, Description, InstallDate, Organization, RegisteredUser, SerialNumber) | 162 | // (Name, Version, CSDVersion, Description, InstallDate, Organization, RegisteredUser, SerialNumber) |
| 159 | params.clear(); | 163 | params.clear(); |
| 160 | params << "Name" << "Version" << "CSDVersion" << "Description" << "InstallDate" << "Organization" << "RegisteredUser" | 164 | params << "Name" << "Version" << "CSDVersion" << "Description" << "InstallDate" << "Organization" << "RegisteredUser" |
| 161 | << "SerialNumber"; | 165 | << "SerialNumber"; |
| 162 | - wmi = wmiSearch("Win32_OperatingSystem", params); | ||
| 163 | - if (!wmi.isNull()) | ||
| 164 | - hardware["OperatingSystem"] = wmi; | 166 | + wmiResult = wmi::wmiSearch("Win32_OperatingSystem", params); |
| 167 | + if (!wmiResult.isNull()) | ||
| 168 | + hardware["OperatingSystem"] = wmiResult; | ||
| 165 | //Win32_SystemSlot | 169 | //Win32_SystemSlot |
| 166 | // (Name, Description, SlotDesignation, CurrentUsage, Status, Shared) | 170 | // (Name, Description, SlotDesignation, CurrentUsage, Status, Shared) |
| 167 | params.clear(); | 171 | params.clear(); |
| 168 | params << "Name" << "Description" << "SlotDesignation" << "CurrentUsage" << "Status" << "Shared"; | 172 | params << "Name" << "Description" << "SlotDesignation" << "CurrentUsage" << "Status" << "Shared"; |
| 169 | - wmi = wmiSearch("Win32_SystemSlot", params); | ||
| 170 | - if (!wmi.isNull()) | ||
| 171 | - hardware["SystemSlot"] = wmi; | 173 | + wmiResult = wmi::wmiSearch("Win32_SystemSlot", params); |
| 174 | + if (!wmiResult.isNull()) | ||
| 175 | + hardware["SystemSlot"] = wmiResult; | ||
| 172 | //Win32_LogicalDisk | 176 | //Win32_LogicalDisk |
| 173 | // (Caption, DriveType, Filesystem, VolumeName, ProviderName, Filesystem, VolumeName, Size, FreeSpace) | 177 | // (Caption, DriveType, Filesystem, VolumeName, ProviderName, Filesystem, VolumeName, Size, FreeSpace) |
| 174 | params.clear(); | 178 | params.clear(); |
| 175 | params << "Caption" << "DriveType" << "Filesystem" << "VolumeName" << "ProviderName" << "Filesystem" << "VolumeName" | 179 | params << "Caption" << "DriveType" << "Filesystem" << "VolumeName" << "ProviderName" << "Filesystem" << "VolumeName" |
| 176 | << "Size" << "FreeSpace"; | 180 | << "Size" << "FreeSpace"; |
| 177 | - wmi = wmiSearch("Win32_LogicalDisk", params); | ||
| 178 | - if (!wmi.isNull()) | ||
| 179 | - hardware["LogicalDisk"] = wmi; | 181 | + wmiResult = wmi::wmiSearch("Win32_LogicalDisk", params); |
| 182 | + if (!wmiResult.isNull()) | ||
| 183 | + hardware["LogicalDisk"] = wmiResult; | ||
| 180 | //Win32_PhysicalMemory | 184 | //Win32_PhysicalMemory |
| 181 | // (Caption, Description, BankLabel, DeviceLocator, Capacity, Speed, MemoryType, SerialNumber) | 185 | // (Caption, Description, BankLabel, DeviceLocator, Capacity, Speed, MemoryType, SerialNumber) |
| 182 | params.clear(); | 186 | params.clear(); |
| 183 | params << "Caption" << "Description" << "BankLabel" << "DeviceLocator" << "Capacity" << "Speed" << "MemoryType"; | 187 | params << "Caption" << "Description" << "BankLabel" << "DeviceLocator" << "Capacity" << "Speed" << "MemoryType"; |
| 184 | - wmi = wmiSearch("Win32_PhysicalMemory", params); | ||
| 185 | - if (!wmi.isNull()) | ||
| 186 | - hardware["PhysicalMemory"] = wmi; | 188 | + wmiResult = wmi::wmiSearch("Win32_PhysicalMemory", params); |
| 189 | + if (!wmiResult.isNull()) | ||
| 190 | + hardware["PhysicalMemory"] = wmiResult; | ||
| 187 | //Win32_Keyboard | 191 | //Win32_Keyboard |
| 188 | // (Caption, Description, Name) | 192 | // (Caption, Description, Name) |
| 189 | params.clear(); | 193 | params.clear(); |
| 190 | params << "Caption" << "Description" << "Name" << "Layout"; | 194 | params << "Caption" << "Description" << "Name" << "Layout"; |
| 191 | - wmi = wmiSearch("Win32_Keyboard", params); | ||
| 192 | - if (!wmi.isNull()) | ||
| 193 | - hardware["Keyboard"] = wmi; | 195 | + wmiResult = wmi::wmiSearch("Win32_Keyboard", params); |
| 196 | + if (!wmiResult.isNull()) | ||
| 197 | + hardware["Keyboard"] = wmiResult; | ||
| 194 | //Win32_PointingDevice | 198 | //Win32_PointingDevice |
| 195 | // (Manufacturer, Caption, Description, PointingType, DeviceInterface) | 199 | // (Manufacturer, Caption, Description, PointingType, DeviceInterface) |
| 196 | params.clear(); | 200 | params.clear(); |
| 197 | params << "Manufacturer" << "Caption" << "Description" << "PointingType" << "DeviceInterface"; | 201 | params << "Manufacturer" << "Caption" << "Description" << "PointingType" << "DeviceInterface"; |
| 198 | - wmi = wmiSearch("Win32_PointingDevice", params); | ||
| 199 | - if (!wmi.isNull()) | ||
| 200 | - hardware["PointingDevice"] = wmi; | 202 | + wmiResult = wmi::wmiSearch("Win32_PointingDevice", params); |
| 203 | + if (!wmiResult.isNull()) | ||
| 204 | + hardware["PointingDevice"] = wmiResult; | ||
| 201 | //Win32_PnPSignedDriver | 205 | //Win32_PnPSignedDriver |
| 202 | // (Manufacturer, DeviceName, Description, Location, DeviceClass) | 206 | // (Manufacturer, DeviceName, Description, Location, DeviceClass) |
| 203 | params.clear(); | 207 | params.clear(); |
| 204 | params << "Manufacturer" << "DeviceName" << "Description" << "Location" << "DeviceClass"; | 208 | params << "Manufacturer" << "DeviceName" << "Description" << "Location" << "DeviceClass"; |
| 205 | - wmi = wmiSearch("Win32_PnPSignedDriver", params); | ||
| 206 | - if (!wmi.isNull()) | ||
| 207 | - hardware["PnPSignedDriver"] = wmi; | 209 | + wmiResult = wmi::wmiSearch("Win32_PnPSignedDriver", params); |
| 210 | + if (!wmiResult.isNull()) | ||
| 211 | + hardware["PnPSignedDriver"] = wmiResult; | ||
| 208 | // qDebug() << hardware; | 212 | // qDebug() << hardware; |
| 209 | return hardware; | 213 | return hardware; |
| 210 | } | 214 | } |
| 211 | 215 | ||
| 212 | -QJsonValue cacic_hardware::wmiSearch(QString classe, QStringList params) | ||
| 213 | -{ | ||
| 214 | - QJsonValue wmiReturn; | ||
| 215 | - QJsonObject itemWmi; | ||
| 216 | - QJsonArray arrayItens; | ||
| 217 | - QString paramsString; | ||
| 218 | - if (!params.empty()){ | ||
| 219 | - for(int i = 0; i!=params.size();i++) | ||
| 220 | - paramsString.append(params.at(i) + ((i != params.size() - 1) ? "," : "")); | ||
| 221 | - } | ||
| 222 | - QString query = "SELECT " + ((!paramsString.isEmpty()) ? paramsString : "*") + " FROM " + classe; | ||
| 223 | - //conecta ao script (Como já estamos usando QObject, o WbemScripting... não funciona chamando normal, | ||
| 224 | - // por isso deve ser usado o CoInitializeEx) | ||
| 225 | - ::CoInitializeEx(NULL, COINIT_MULTITHREADED); | ||
| 226 | - QAxObject *objIWbemLocator = new QAxObject(); | ||
| 227 | - objIWbemLocator->setControl("WbemScripting.SWbemLocator"); | ||
| 228 | - if (objIWbemLocator->isNull()) | ||
| 229 | - return QJsonValue(); | ||
| 230 | - //conecta ao wmi | ||
| 231 | - QAxObject *objWMIService = objIWbemLocator->querySubObject("ConnectServer(QString&,QString&)", | ||
| 232 | - QString("."), | ||
| 233 | - QString("root\\CIMV2") | ||
| 234 | - ); | ||
| 235 | -// qDebug() << ">>>>>>>>>" << objIWbemLocator->isNull() << objWMIService->isNull(); | ||
| 236 | - //Faz a pesquisa no wmi | ||
| 237 | - QAxObject* returnList = objWMIService->querySubObject("ExecQuery(QString&)", query); | ||
| 238 | -// qDebug() << "<<<<<<<<<<<<<<<<<<<<<<<"; | ||
| 239 | - QAxObject *enum1 = returnList->querySubObject("_NewEnum"); | ||
| 240 | - | ||
| 241 | - IEnumVARIANT* enumInterface = 0; | ||
| 242 | - | ||
| 243 | - enum1->queryInterface(IID_IEnumVARIANT, (void**)&enumInterface); | ||
| 244 | - | ||
| 245 | - enumInterface->Reset(); | ||
| 246 | - int countReturnListObj = returnList->dynamicCall("Count").toInt(); | ||
| 247 | - for (int i = 0; i < countReturnListObj; i++) { | ||
| 248 | - VARIANT *theItem = (VARIANT*)malloc(sizeof(VARIANT)); | ||
| 249 | - if (enumInterface->Next(1,theItem,NULL) != S_FALSE){ | ||
| 250 | - QAxObject *item = new QAxObject((IUnknown *)theItem->punkVal); | ||
| 251 | - if(item){ | ||
| 252 | - //pega o retorno da query | ||
| 253 | - QString instance = item->dynamicCall("GetObjectText_(int)", QVariant(0)).toString(); | ||
| 254 | - QStringList instanceList = instance.split("\n\t"); | ||
| 255 | - //Pra cada linha grava no json os valores com cada tag | ||
| 256 | - foreach(QString value, instanceList){ | ||
| 257 | - QStringList valueList = value.split("="); | ||
| 258 | - if (valueList.size() > 1){ | ||
| 259 | - QString tag = valueList.at(0).trimmed(); | ||
| 260 | - QString aux = valueList.at(1).trimmed(); | ||
| 261 | - aux.remove("\""); | ||
| 262 | - aux.remove(";"); | ||
| 263 | - aux.remove("\n"); | ||
| 264 | - //verifica se é lista | ||
| 265 | - if(aux.startsWith("{") && aux.endsWith("}")){ | ||
| 266 | - QStringList auxList = aux.split(","); | ||
| 267 | - QJsonArray jList; | ||
| 268 | - foreach(QString valueList, auxList){ | ||
| 269 | - if (valueList.contains("{")) | ||
| 270 | - valueList.remove("{"); | ||
| 271 | - if (valueList.contains("}")) | ||
| 272 | - valueList.remove("}"); | ||
| 273 | - jList.append(valueList.trimmed()); | ||
| 274 | - } | ||
| 275 | - itemWmi[tag] = jList; | ||
| 276 | - } else { | ||
| 277 | - //O último valor sempre volta com "}" no final. | ||
| 278 | - if (aux.contains("}")) | ||
| 279 | - aux.remove("}"); | ||
| 280 | - itemWmi[tag] = QJsonValue::fromVariant(aux.trimmed()); | ||
| 281 | - } | ||
| 282 | - } | ||
| 283 | - } // foreach(QString value, instanceList) | ||
| 284 | - } // if(item) | ||
| 285 | - } // if (enumInterface->Next(1,theItem,NULL) != S_FALSE) | ||
| 286 | - //Se houver mais de um objeto, grava em uma lista | ||
| 287 | - if (countReturnListObj > 1){ | ||
| 288 | - arrayItens.append(QJsonValue(itemWmi)); | ||
| 289 | - } | ||
| 290 | - } | ||
| 291 | - objIWbemLocator->clear(); | ||
| 292 | - ::CoUninitialize(); | ||
| 293 | - //se for mais de um objeto, retorna array. | ||
| 294 | - if (!arrayItens.isEmpty()) | ||
| 295 | - wmiReturn = QJsonValue(arrayItens); | ||
| 296 | - //senão, se o objeto não for vazio (se tiver coletado algo) | ||
| 297 | - else if (!itemWmi.isEmpty()) | ||
| 298 | - wmiReturn = QJsonValue(itemWmi); | ||
| 299 | - | ||
| 300 | - return wmiReturn; | ||
| 301 | -} | ||
| 302 | #elif defined(Q_OS_LINUX) | 216 | #elif defined(Q_OS_LINUX) |
| 303 | QJsonObject cacic_hardware::coletaLinux() | 217 | QJsonObject cacic_hardware::coletaLinux() |
| 304 | { | 218 | { |
src/cacic_hardware.h
| @@ -8,8 +8,7 @@ | @@ -8,8 +8,7 @@ | ||
| 8 | #include <console.h> | 8 | #include <console.h> |
| 9 | #include <operatingsystem.h> | 9 | #include <operatingsystem.h> |
| 10 | #ifdef Q_OS_WIN | 10 | #ifdef Q_OS_WIN |
| 11 | - #include <windows.h> | ||
| 12 | - #include <ActiveQt/ActiveQt> | 11 | + #include <wmi.h> |
| 13 | #endif | 12 | #endif |
| 14 | 13 | ||
| 15 | class cacic_hardware | 14 | class cacic_hardware |
| @@ -22,7 +21,6 @@ public: | @@ -22,7 +21,6 @@ public: | ||
| 22 | private: | 21 | private: |
| 23 | #ifdef Q_OS_WIN | 22 | #ifdef Q_OS_WIN |
| 24 | QJsonObject coletaWin(); | 23 | QJsonObject coletaWin(); |
| 25 | - QJsonValue wmiSearch(QString classe, QStringList params); | ||
| 26 | 24 | ||
| 27 | #elif defined(Q_OS_LINUX) | 25 | #elif defined(Q_OS_LINUX) |
| 28 | QJsonObject coletaLinux(); | 26 | QJsonObject coletaLinux(); |
src/cacic_software.h
| @@ -4,7 +4,6 @@ | @@ -4,7 +4,6 @@ | ||
| 4 | #include <ccacic.h> | 4 | #include <ccacic.h> |
| 5 | #include <console.h> | 5 | #include <console.h> |
| 6 | #include <operatingsystem.h> | 6 | #include <operatingsystem.h> |
| 7 | - | ||
| 8 | #ifdef Q_OS_WIN | 7 | #ifdef Q_OS_WIN |
| 9 | #include <vqtconvert.h> | 8 | #include <vqtconvert.h> |
| 10 | #include <vregistry.h> | 9 | #include <vregistry.h> |
src/operatingsystem.cpp
| @@ -45,16 +45,15 @@ int OperatingSystem::coletaIdOs(){ | @@ -45,16 +45,15 @@ int OperatingSystem::coletaIdOs(){ | ||
| 45 | QString OperatingSystem::coletaNomeOs() | 45 | QString OperatingSystem::coletaNomeOs() |
| 46 | { | 46 | { |
| 47 | #if defined(Q_OS_WIN) | 47 | #if defined(Q_OS_WIN) |
| 48 | - QString text; | ||
| 49 | - QStringList environment = QProcessEnvironment::systemEnvironment().toStringList(); | ||
| 50 | - foreach (text, environment) { | ||
| 51 | -// qDebug() << text; | ||
| 52 | - if (text.contains("OS=" , Qt::CaseInsensitive) ){ | ||
| 53 | - QStringList split = text.split("="); | ||
| 54 | - // qDebug() << split[1]; | ||
| 55 | - return split[1]; | ||
| 56 | - } | ||
| 57 | - } | 48 | + QStringList params; |
| 49 | + QJsonValue osName; | ||
| 50 | + params << "Name"; | ||
| 51 | + osName = wmi::wmiSearch("Win32_OperatingSystem", params); | ||
| 52 | + if (!osName.isNull()){ | ||
| 53 | + QString retorno = osName.toObject()["Name"].toString(); | ||
| 54 | + retorno = retorno.left(retorno.indexOf("|")); | ||
| 55 | + return retorno; | ||
| 56 | + } | ||
| 58 | #elif defined(Q_OS_LINUX) | 57 | #elif defined(Q_OS_LINUX) |
| 59 | ConsoleObject console; | 58 | ConsoleObject console; |
| 60 | QStringList catOutput = console("cat /etc/*release").split("\n"); | 59 | QStringList catOutput = console("cat /etc/*release").split("\n"); |
src/operatingsystem.h
| @@ -5,9 +5,11 @@ | @@ -5,9 +5,11 @@ | ||
| 5 | #include <QString> | 5 | #include <QString> |
| 6 | #include <QStringList> | 6 | #include <QStringList> |
| 7 | #include <QSysInfo> | 7 | #include <QSysInfo> |
| 8 | - | ||
| 9 | #include "ccacic.h" | 8 | #include "ccacic.h" |
| 10 | #include "console.h" | 9 | #include "console.h" |
| 10 | +#ifdef Q_OS_WIN | ||
| 11 | + #include "wmi.h" | ||
| 12 | +#endif | ||
| 11 | 13 | ||
| 12 | class OperatingSystem | 14 | class OperatingSystem |
| 13 | { | 15 | { |
src/qtservice/common.pri
| 1 | -exists(config.pri):infile(config.pri, SOLUTIONS_LIBRARY, yes): CONFIG += qtservice-uselib | 1 | +#exists(config.pri):infile(config.pri, SOLUTIONS_LIBRARY, yes): CONFIG += qtservice-uselib |
| 2 | TEMPLATE += fakelib | 2 | TEMPLATE += fakelib |
| 3 | QTSERVICE_LIBNAME = QtSolutions_Service-head | 3 | QTSERVICE_LIBNAME = QtSolutions_Service-head |
| 4 | CONFIG(debug, debug|release) { | 4 | CONFIG(debug, debug|release) { |
src/wmi.cpp
| @@ -3,3 +3,94 @@ | @@ -3,3 +3,94 @@ | ||
| 3 | wmi::wmi() | 3 | wmi::wmi() |
| 4 | { | 4 | { |
| 5 | } | 5 | } |
| 6 | + | ||
| 7 | +QJsonValue wmi::wmiSearch(QString classe, QStringList params) | ||
| 8 | +{ | ||
| 9 | + QJsonValue wmiReturn; | ||
| 10 | + QJsonObject itemWmi; | ||
| 11 | + QJsonArray arrayItens; | ||
| 12 | + QString paramsString; | ||
| 13 | + if (!params.empty()){ | ||
| 14 | + for(int i = 0; i!=params.size();i++) | ||
| 15 | + paramsString.append(params.at(i) + ((i != params.size() - 1) ? "," : "")); | ||
| 16 | + } | ||
| 17 | + QString query = "SELECT " + ((!paramsString.isEmpty()) ? paramsString : "*") + " FROM " + classe; | ||
| 18 | + //conecta ao script (Como já estamos usando QObject, o WbemScripting... não funciona chamando normal, | ||
| 19 | + // por isso deve ser usado o CoInitializeEx) | ||
| 20 | + ::CoInitializeEx(NULL, COINIT_MULTITHREADED); | ||
| 21 | + QAxObject *objIWbemLocator = new QAxObject(); | ||
| 22 | + objIWbemLocator->setControl("WbemScripting.SWbemLocator"); | ||
| 23 | + if (objIWbemLocator->isNull()) | ||
| 24 | + return QJsonValue(); | ||
| 25 | + //conecta ao wmi | ||
| 26 | + QAxObject *objWMIService = objIWbemLocator->querySubObject("ConnectServer(QString&,QString&)", | ||
| 27 | + QString("."), | ||
| 28 | + QString("root\\CIMV2") | ||
| 29 | + ); | ||
| 30 | +// qDebug() << ">>>>>>>>>" << objIWbemLocator->isNull() << objWMIService->isNull(); | ||
| 31 | + //Faz a pesquisa no wmi | ||
| 32 | + QAxObject* returnList = objWMIService->querySubObject("ExecQuery(QString&)", query); | ||
| 33 | +// qDebug() << "<<<<<<<<<<<<<<<<<<<<<<<"; | ||
| 34 | + QAxObject *enum1 = returnList->querySubObject("_NewEnum"); | ||
| 35 | + | ||
| 36 | + IEnumVARIANT* enumInterface = 0; | ||
| 37 | + | ||
| 38 | + enum1->queryInterface(IID_IEnumVARIANT, (void**)&enumInterface); | ||
| 39 | + | ||
| 40 | + enumInterface->Reset(); | ||
| 41 | + int countReturnListObj = returnList->dynamicCall("Count").toInt(); | ||
| 42 | + for (int i = 0; i < countReturnListObj; i++) { | ||
| 43 | + VARIANT *theItem = (VARIANT*)malloc(sizeof(VARIANT)); | ||
| 44 | + if (enumInterface->Next(1,theItem,NULL) != S_FALSE){ | ||
| 45 | + QAxObject *item = new QAxObject((IUnknown *)theItem->punkVal); | ||
| 46 | + if(item){ | ||
| 47 | + //pega o retorno da query | ||
| 48 | + QString instance = item->dynamicCall("GetObjectText_(int)", QVariant(0)).toString(); | ||
| 49 | + QStringList instanceList = instance.split("\n\t"); | ||
| 50 | + //Pra cada linha grava no json os valores com cada tag | ||
| 51 | + foreach(QString value, instanceList){ | ||
| 52 | + QStringList valueList = value.split("="); | ||
| 53 | + if (valueList.size() > 1){ | ||
| 54 | + QString tag = valueList.at(0).trimmed(); | ||
| 55 | + QString aux = valueList.at(1).trimmed(); | ||
| 56 | + aux.remove("\""); | ||
| 57 | + aux.remove(";"); | ||
| 58 | + aux.remove("\n"); | ||
| 59 | + //verifica se é lista | ||
| 60 | + if(aux.startsWith("{") && aux.endsWith("}")){ | ||
| 61 | + QStringList auxList = aux.split(","); | ||
| 62 | + QJsonArray jList; | ||
| 63 | + foreach(QString valueList, auxList){ | ||
| 64 | + if (valueList.contains("{")) | ||
| 65 | + valueList.remove("{"); | ||
| 66 | + if (valueList.contains("}")) | ||
| 67 | + valueList.remove("}"); | ||
| 68 | + jList.append(valueList.trimmed()); | ||
| 69 | + } | ||
| 70 | + itemWmi[tag] = jList; | ||
| 71 | + } else { | ||
| 72 | + //O último valor sempre volta com "}" no final. | ||
| 73 | + if (aux.contains("}")) | ||
| 74 | + aux.remove("}"); | ||
| 75 | + itemWmi[tag] = QJsonValue::fromVariant(aux.trimmed()); | ||
| 76 | + } | ||
| 77 | + } | ||
| 78 | + } // foreach(QString value, instanceList) | ||
| 79 | + } // if(item) | ||
| 80 | + } // if (enumInterface->Next(1,theItem,NULL) != S_FALSE) | ||
| 81 | + //Se houver mais de um objeto, grava em uma lista | ||
| 82 | + if (countReturnListObj > 1){ | ||
| 83 | + arrayItens.append(QJsonValue(itemWmi)); | ||
| 84 | + } | ||
| 85 | + } | ||
| 86 | + objIWbemLocator->clear(); | ||
| 87 | + ::CoUninitialize(); | ||
| 88 | + //se for mais de um objeto, retorna array. | ||
| 89 | + if (!arrayItens.isEmpty()) | ||
| 90 | + wmiReturn = QJsonValue(arrayItens); | ||
| 91 | + //senão, se o objeto não for vazio (se tiver coletado algo) | ||
| 92 | + else if (!itemWmi.isEmpty()) | ||
| 93 | + wmiReturn = QJsonValue(itemWmi); | ||
| 94 | + | ||
| 95 | + return wmiReturn; | ||
| 96 | +} |
src/wmi.h
| 1 | #ifndef WMI_H | 1 | #ifndef WMI_H |
| 2 | #define WMI_H | 2 | #define WMI_H |
| 3 | 3 | ||
| 4 | +#include <ccacic.h> | ||
| 5 | +#include <windows.h> | ||
| 6 | +#include <ActiveQt/ActiveQt> | ||
| 7 | + | ||
| 4 | class wmi | 8 | class wmi |
| 5 | { | 9 | { |
| 6 | public: | 10 | public: |
| 7 | wmi(); | 11 | wmi(); |
| 12 | + static QJsonValue wmiSearch(QString classe, QStringList params); | ||
| 13 | +private: | ||
| 8 | }; | 14 | }; |
| 9 | 15 | ||
| 10 | #endif // WMI_H | 16 | #endif // WMI_H |