Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [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