Hallo Forum,
bin derzeit am verzweifeln.
War wirklich Happy als "Borland Delphi 2005 Personal" zum Download freigab.
Seitdem programmiere ich darin.
Ergebnis seht ihr hier
http://www.dslr-forum.de/showthread....62#post2213962
Wer eine canon EOS Kamera hat ist als Tester willkommen.
Nun zu meinem Problem.
Ich möchte die Seriellen und paralellen Schnittstellen auslesen um die Daten :
Anzahl
Basisadressen
Benutzung etc.
zu erhalten.
Nach Recherche fand ich nun heraus dass dieses mit
WMI geht.
Aber egal welchens Beispiel bzw Komponente ich dazu runterlade und installiere
sie wollen alle nicht laufen.
Nachdem ich nun endlich die wbemscripting_tlb.pas gefunden habe habe ich versucht sie einzubinden.
ALs Beipielsource hae ich folgenden gefunden :
Delphi-Quellcode:
type
TProcesInformation =
packed record
Name:
string;
Path:
string;
ProcID: DWORD;
ParentProcID: DWORD;
SessionID: DWORD;
ThreadCount: DWORD;
Priority: DWORD;
end;
type
TPIArray =
array of TProcesInformation;
const
WMI_HOST_COMPUTER = '
.';
WMI_SYSTEM_NAMESPACE = '
root\CIMV2';
WMI_ATTRIB_CAPTION = '
Name';
WMI_ATTRIB_PATH = '
ExecutablePath';
WMI_ATTRIB_PROCID = '
ProcessID';
WMI_ATTRIB_PARENT_PROCID = '
ParentProcessId';
WMI_ATTRIB_SESSIONID = '
SessionID';
WMI_ATTRIB_THREAD_CNT = '
ThreadCount';
var
Form1: TForm1;
implementation
{$R *.dfm}
const
// define used constants
WMI_LOCAL_COMPUTER = '
.';
WMI_CLASS_NIC = '
Win32_NetworkAdapter';
WMI_ATTRIB_MAC = '
MACAddress';
// retrieve System MAC Addresses via WMI
//
function getSystemMACAddresses: TStringList;
var
l_WMILocator: ISWbemLocator;
// Locator, gets Services
l_WMIServices: ISWbemServices;
// Services, gets Object Definitions
l_WMIObjectDefinition: ISWbemObject;
// Definition, gets Set of Objetcs
l_WMIObjectSet: SWbemObjectSet;
// ObjectSet, gets Enum over Instances
l_WMIObjectInstances: IEnumVariant;
// Enum of Instances, gets Object
l_WMIObject: ISWbemObject;
// Object, gets Sets of his properties
l_WMIPropertySet: ISWbemPropertySet;
// PropertySet, gets single property
l_WMIProperty: ISWbemProperty;
// Property, gets Value
l_TempObj: OleVariant;
// temporary used values
l_ObjValue: Cardinal;
begin
// create the return object
result := TStringList.Create;
// retrieve object enum through WMI classes
l_WMILocator := CoSWbemLocator.Create;
l_WMIServices := L_WMILocator.ConnectServer(WMI_LOCAL_COMPUTER, WMI_SYSTEM_NAMESPACE, '
', '
', '
', '
', 0,
nil);
l_WMIObjectDefinition := l_WMIServices.Get(WMI_CLASS_NIC, wbemFlagUseAmendedQualifiers,
nil);
l_WMIObjectSet := l_WMIObjectDefinition.Instances_(0,
nil);
// l_WMIObjectInstances := (l_WMIObjectSet._NewEnum) as IEnumVariant;
// iterate through enum values (WbemObjects) and get the property values
while (l_WMIObjectInstances.Next(1, l_TempObj, l_ObjValue) = S_OK)
do
begin
l_WMIObject:= IUnknown(l_TempObj)
as SWBemObject;
l_WMIPropertySet := l_WMIObject.Properties_;
l_WMIProperty := l_WMIPropertySet.Item(WMI_ATTRIB_MAC, 0);
if not VarIsNull(l_WMIProperty.Get_Value)
then
result.Add(l_WMIProperty.Get_Value);
end;
end;
Soweit so gut.
Nur wirft der mir für
l_WMIObjectInstances: IEnumVariant; // Enum of Instances, gets Object
einen E2003 Undefinierter Bezeichner raus.
Woran kann das liegen ??
Muss dazu sagen das ich "nur" Proggen kann und mich mit der Delphi
IDE nicht allzu gut auskenne, da ich es als Hobbie betreibe.
Wäre super wenn mir jemand helfen könnte .
MFG
Smithsonian alias Frank Schmidt
[edit=Phoenix]Delphi-Tags ergänzt. Das nächste mal bitte selber um den Code legen. Mfg, Phoenix[/edit]