![]() |
Laptop oder Desktop Computer ermitteln??
Guten Abend,
kann mir einer einen Ansatz geben, wie ich ermitteln kann, ob es sich um einen Laptop, Desktop PC oder Server handelt? Wäre echt cool. Gruß, Sven |
Re: Laptop oder Desktop Computer ermitteln??
Was macht denn für dich die Differenz zwischen einem Laptop, Desktop PC und Server aus. Ich kann durchaus auf meinem Laptop ein Win2003 OS installieren, und wenn ich zuviel Geld hab, so darf ich auch gern ein Dell PE 2950 als Arbeitsplatzrechner nutzen.
Irgendwelche Kriterien brauchst Du also! |
Re: Laptop oder Desktop Computer ermitteln??
Die Abhängigkeit liegt im lokalen Administrator. Ist aber auch egal.
In VBS kann man das mit Computer Chassis Typ ermitteln. Irgendwie muss das doch auch auf Delphi anwendbar sein ohne den Code von VBS nach Delphi zu wandeln. Gruß, Sven |
Re: Laptop oder Desktop Computer ermitteln??
Zitat:
|
Re: Laptop oder Desktop Computer ermitteln??
Wir haben in der Firma unterschiedliche lokale Administratoren für Laptops und Desktops. Der User an sich hat keine Adminrechte mehr.
Ich brauche die Ermittlung für eine Installation. Ich möchte den in Abhängigkeit des Chassis Typs den lokalen Administrator die folgende Funktion aufrufen lassen "CreateProcessAsLogon". Ich könnte auch abfragen, ob der lokale Administrator existiert aber ich würde es gerne über den Chassis Typ oder wie auch immer ich ermitteln kann, ob Laptop oder Desktop, programmieren. |
Re: Laptop oder Desktop Computer ermitteln??
Genügt nicht einfach das Prüfen auf einen Akku? Wäre für mich das Naheliegenste, oder? Jetzt weiß ich nur nicht, inwieweit eine USV als Akku erkannt wird *g*
Da:
Delphi-Quellcode:
function GetPowerStatus(var HasBattery: Boolean; var LoadStatusString: String;
var LoadstatusPercent: Integer): DWORD; function TForm1.GetPowerStatus(var HasBattery: Boolean; var LoadStatusString: String; var LoadstatusPercent: Integer): DWORD; var SystemPowerStatus: TSystemPowerStatus; Text:string; resourcestring rsLoadStatusUnknown = 'Unbekannter Status'; rsLoadStatusNoBattery = 'Es existiert kein Akku'; rsLoadStatusHigh = 'Hoher Ladezustand'; rsLoadStatusLow = 'Niedriger Ladezustand'; rsLoadStatusCritical = 'Kritischer Ladezustand'; rsLoadStatusLoading = ' Akku wird geladen'; rsLoadSatusUnknownLoading = 'Unbekannter Ladezustand'; begin SetLastError(0); if GetSystemPowerStatus(SystemPowerStatus) then with SystemPowerStatus do begin HasBattery := ACLineStatus = 0; // Ladezustand der Batterie if (BatteryFlag = 255) then LoadStatusString := rsLoadStatusUnknown else if (BatteryFlag and 128 = 128) then LoadStatusString := rsLoadStatusNoBattery else begin case (BatteryFlag and (1 or 2 or 4)) of 1: Text := rsLoadStatusHigh; 2: Text := rsLoadStatusLow; 4: Text := rsLoadStatusCritical; else LoadStatusString := rsLoadSatusUnknownLoading end; if (BatteryFlag and 8 = 8) then LoadStatusString := Text + rsLoadStatusLoading else LoadStatusString:=text+' '+inttostr(LoadstatusPercent)+'% verbleibend'; end; // Ladezustand in Prozent if (BatteryLifePercent <> 255) then LoadstatusPercent := BatteryLifePercent else LoadstatusPercent := -1; end; Result := GetLastError; end; |
Re: Laptop oder Desktop Computer ermitteln??
Da wir über Alternativen reden, gehe ich mal davon aus, dass das mit dem Chassis Typ nicht geht. Oder?
Die Idee mit dem Akku ist auch nicht schlecht. Der Unterschied zwischen Dektop oder Laptop und Server würde ich über das Betriebssystem machen. Also bleibt nur noch der Unterschied zwischen Desktop und Laptop übrig. |
Re: Laptop oder Desktop Computer ermitteln??
@christian.noeding: Wenn der Laptop am Netz ist, wird er Akku nicht erkannt und würde als Desktop PC erkannt. Etwas unpraktisch.
|
Re: Laptop oder Desktop Computer ermitteln??
Hast dus getestet? Bei mir gibts da keine Probleme... es wird sogar entsprechend der entsprechend definierte String "Akku wird geladen..." angezeigt und die Prozentzahl lässt sich prima auslesen...
Na gut, es kann sein, dass es hier akkuspezifisch Probleme geben kann, jedoch funktioniert die gepostete Funktion mit Notebooks von MSI, Fujitsu-Siemens (Amilo-M) und Acer. Habe ich getestet. Bis denn, Christian ;) Edit:
Delphi-Quellcode:
- OK, das stimmt - eben überlesen. Dann musst du eben das Statusbyte auslesen und entsprechend auswerten.
HasBattery := ACLineStatus = 0
|
Re: Laptop oder Desktop Computer ermitteln??
VB Script
Delphi-Quellcode:
im netz gefunden
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colChassis = objWMIService.ExecQuery _ ("Select * from Win32_SystemEnclosure") For Each objChassis in colChassis For i = Lbound(objChassis.ChassisTypes) to Ubound(objChassis.ChassisTypes) Wscript.Echo objChassis.ChassisTypes(i) Next Next |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz