Avatar billede hugopedersen Nybegynder
09. februar 2009 - 14:32 Der er 7 kommentarer og
1 løsning

Harddisk info

Er der noget eksempel kode på hvordan man fanger oplysninger om harddisken i sin computer?
Gerne de samme som f.eks. HardDriveInfo.DLL kan finde.


Har prøvet at søge her på Eksperten, men jeg synes ikke altid at søgefunktionen virker.
Avatar billede arne_v Ekspert
09. februar 2009 - 14:54 #1
Soegedunktionen virker vist stadig ikke.

Det du skal soege paa i Google er:
  Delphi WMI

Du hante info baade om logiske drev og om fysiske diske via WMI.
Avatar billede arne_v Ekspert
10. februar 2009 - 04:17 #2
Eksempel:

program wmifun2;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  ActiveX,
  Variants,
  WbemScripting_TLB in '..\..\Program Files\Borland\Delphi7\Projects\WbemScripting_TLB.pas';

var
  loc : ISWbemLocator;
  serv : ISWbemServices;
  objset : ISWbemObjectSet;
  enum : IEnumVariant;
  temp : OleVariant;
  val : Cardinal;
  obj : ISWbemObject;
  prop : ISWbemProperty;
  caption, drivetype, size : OleVariant;
  i : integer;

begin
  CoInitialize(nil);
  loc := CoSWbemLocator.Create;
  serv :=  loc.ConnectServer('.', 'root\cimv2', '', '', '','', 0, nil);
  objset := serv.ExecQuery('SELECT * FROM Win32_LogicalDisk', 'WQL', wbemFlagReturnImmediately and wbemFlagForwardOnly , nil);
  enum := (objset._NewEnum) as IEnumVariant;
  while (enum.Next(1, temp, val) = S_OK) do begin
    obj := IUnknown(temp) as ISWBemObject;
    prop := obj.Properties_.Item('Caption', 0);
    caption := prop.Get_Value;
    prop := obj.Properties_.Item('DriveType', 0);
    drivetype := prop.Get_Value;
    prop := obj.Properties_.Item('Size', 0);
    size := prop.Get_Value;
    writeln(VarToStr(caption),' ',VarToStr(drivetype),' ',VarToStr(size));
  end;
  CoUninitialize();
end.
Avatar billede arne_v Ekspert
10. februar 2009 - 04:18 #3
Jeg er iøvrigt ikke skrap til COM i C++ og jer er endnu dårligere til COM i Delphi.
Avatar billede hugopedersen Nybegynder
10. februar 2009 - 07:10 #4
COM ?  Hvad er det :-)

Jeg har fundet et eksempel på nettet, men det bruger også WbemScripting_TLB.pas og den har jeg ikke i min Delphi 2009 så vidt jeg kan se.
Avatar billede hugopedersen Nybegynder
10. februar 2009 - 10:13 #5
Jeg fandt ud af at få fat på det typelibrary, så nu har jeg noget via WMI

Så smid lige et svar.
Avatar billede arne_v Ekspert
10. februar 2009 - 14:09 #6
COM er noget som >80% af alle programmoerer bruger, men som <1% af dem forstaar.

:-)

http://en.wikipedia.org/wiki/Component_Object_Model
Avatar billede arne_v Ekspert
10. februar 2009 - 14:09 #7
og et svar
Avatar billede hugopedersen Nybegynder
10. februar 2009 - 14:20 #8
Det lyder som en rimelig procentfordeling :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester