Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Tutorial

Wmi benutzen mit FreeBasic

von RedakteurytwinkySeite 4 von 6

Wie wir im Beispiel mit 'DiskDrive' schon gesehen haben, wird die Anzahl der Partitionen/Festplatte auch ausgegeben. Da das ja nun von Rechner zu Rechner unterschiedlich sein kann(meine Platten haben alle wenigstens zwei Partitionen, nun gut, die Externen nicht, dafür haben andere 3 davon^^), brauchen wir also einen Aufruf, der uns zeigt, wie die Laufwerke in Partitionen aufgeteilt sind. Hier stehen nun jedoch verschiedene Aufrufe zur Auswahl, die für uns aber einen unterschiedlichen Auswerteaufwand bedeuten. Also nehmen wir (auch aus didaktischen Gründen) die Funktion Win32_PerfFormattedData_PerfDisk_LogicalDisk, denn hier liefert das Element 'Name' sowohl den Index als auch die Partitions-Buchstaben:

#include once "windows.bi"               'in
#define UNICODE                          'this
#include once "disphelper/disphelper.bi" 'order
#include "vbcompat.bi"
Const strComputer="." 'oder "localhost" oder Environ("ComputerName")
Const impersonate="winmgmts:{impersonationLevel=impersonate}!\\" &strComputer &"\root\cimv2"
Const SelectClass="Select Name from Win32_PerfFormattedData_PerfDisk_PhysicalDisk"

Dim As HRESULT hres
Dim As ZString Ptr devName

DISPATCH_OBJ(wmiSvc)
DISPATCH_OBJ(colDisk)
dhInitialize(True)

'So wird eingestellt, ob Fehler angezeigt werden sollen oder nicht:
'dhToggleExceptions(TRUE) 'bei Bedarf das 1. ' entfernen ;-))
Print "Index Partition(en)"
hres=dhGetObject(impersonate, NULL, @wmiSvc)
hres=dhGetValue("%o", @colDisk, wmiSvc, ".ExecQuery(%s)", SelectClass)
FOR_EACH0(objDisk, colDisk, NULL)
  hres=dhGetValue("%s", @devName, objDisk, ".Name")
  If InStr(*devName, "_")=0 Then Print *devName 'Index Partition(en) 'die _Total-Zeile nicht ausgeben..
NEXT_(objDisk)
SAFE_RELEASE(wmiSvc)
SAFE_RELEASE(colDisk)
dhUninitialize(True)
Print "Eniki..";
GetKey

Und jetzt kommt der Trick^^

 

Gehe zu Seite Gehe zu Seite  1  2  3  4  5  6  
Zusätzliche Informationen und Funktionen
  • Das Tutorial wurde am 19.02.2011 von Redakteurytwinky angelegt.
  • Die aktuellste Version wurde am 19.02.2011 von Redakteurytwinky gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen