Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Laptop oder Desktop Computer ermitteln?? (https://www.delphipraxis.net/87058-laptop-oder-desktop-computer-ermitteln.html)

Piro 22. Feb 2007 17:50


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

Jelly 22. Feb 2007 17:57

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!

Piro 22. Feb 2007 18:12

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

Luckie 22. Feb 2007 18:32

Re: Laptop oder Desktop Computer ermitteln??
 
Zitat:

Zitat von daywalker299
Die Abhängigkeit liegt im lokalen Administrator. Ist aber auch egal.

Und was hat das mit dem Rechnertyp zu tun?

Piro 22. Feb 2007 18:45

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.

christian.noeding 22. Feb 2007 18:46

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;

Piro 22. Feb 2007 18:49

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.

Piro 22. Feb 2007 19:02

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.

christian.noeding 22. Feb 2007 19:14

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:
HasBattery := ACLineStatus = 0
- OK, das stimmt - eben überlesen. Dann musst du eben das Statusbyte auslesen und entsprechend auswerten.

Gehstock 24. Feb 2007 16:53

Re: Laptop oder Desktop Computer ermitteln??
 
VB Script

Delphi-Quellcode:
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
im netz gefunden


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz