Hi,
ich schreibe an einem Qt Programm und wollte gerne den Akkuladezustand
des Computers abfragen.
nach ein paar Stunden Google-suche bin ich jetzt soweit:
- das ganze geht mit WMI
- Einfache Beispiele zu WMI hier:
http://msdn.microsoft.com/en-us/library/aa390423%28v=VS.85%29.aspx
Jetzt kommen die Probleme:
Ich benutze den Qt-Creator und Qt-Compiler (minigw). Habe also weder
Microsoft Visual Studio noch sonst etwas installiert.
Was mich wundert ist, dass wenn ich die Folgenden Zeile in Qt schreibe:
1 | #include <QCoreApplication>
|
2 | #include <QSysInfo>
|
3 | #include <iostream>
|
4 | using namespace std;
|
5 | #include <comdef.h>
|
6 | #include <Wbemidl.h>
|
7 | #include <QDebug>
|
8 |
|
9 |
|
10 | int main(int argc, char *argv[])
|
11 | {
|
12 | QCoreApplication a(argc, argv);
|
13 |
|
14 | HRESULT hr;
|
15 | hr = CoInitializeEx(0, COINIT_MULTITHREADED);
|
16 | if (FAILED(hr))
|
17 | { qDebug() << "Failed to initialize COM library. Error code = 0x"
|
18 | << hex << hr << endl;
|
19 | //return hr;
|
20 | }
|
21 |
|
22 | return a.exec();
|
23 | }
|
Dann scheint Qt auf wundersame weise "Wbemidl.h" und "comdef.h" zu
kennen, denn "HRESULT" als auch "CoInitializeEx" werden "erkannt" also
wenn ich mit der Maus drüber fahre, zeigt er mir ein paar Informationen
zu den Parametern etc.
Compilieren kann ich jedoch nicht:
... main.cpp:15: Fehler:undefined reference to `_imp__CoInitializeEx@8'
Im MSDN Beispiel ist noch dieser Befehl aufgeführt:
# pragma comment(lib, "wbemuuid.lib")
Was nach meiner Meinung den Computer anweisen soll, die "wbemuuid.lib"
einzubinden. Da ich aber den Qt-Compliler nutze, funktioniert das nicht
und so erkläre ich mir den Fehler.
Nach weiterem Googeln habe ich herausgefunden wie ich liberys in Qt
einbinden kann, finde aber die "wbemuuid.lib" nicht auf meinem Computer.
Was für ein Microsoft SDK Gedöns was auch immer muss ich Installieren um
an die Datei heranzukommen?
MfG