Erkennen, ob die Anwendung auf dem Laptop ausgeführt wird [duplizieren]

7

Ich versuche herauszufinden, ob die Anwendung auf einem Laptop oder auf einem Desktop läuft, irgendwelche Ideen, wie man das erreicht?

Hinweis: Ich bin nur an APIs interessiert, die in Delphi und / oder C ++ geschrieben sind.

EDIT: Meine Zielplattform ist Windows XP +, auch Windows 7 ist nur OK.

LETZTES BEARBEITEN : Ich danke Ihnen allen für Ihre Hilfe. Ich habe eine Einheit mit Hilfsmethoden erstellt (In Delphi), die Sie gerne in C ++ oder andere Sprachen übersetzen und / oder helfen können Fehler). Die Einheit kann hier Ссылка

gefunden werden     
ComputerSaysNo 31.01.2011, 09:49
quelle

6 Antworten

15

Verwenden Sie diese Struktur: SYSTEM_POWER_STATUS und prüfen Sie der Wert von ACLineStatus field.

  • ACLineStatus = 0 = & gt; Das System verwendet keine Wechselstromversorgung & gt; Laptop + Batterie
  • ACLineStatus = 1 = & gt; Das System verwendet AC power = & gt; Laptop + Wechselstrom
  • ACLineStatus = 255 = & gt; Der Wechselstromstatus ist unbekannt = & gt; Desktop

Haftungsausschluss : Versuchen Sie, mit diesen zu experimentieren. Ich behaupte nicht, dass sie zuverlässig sind. Aber sie sind fast korrekt.

-

BEARBEITEN:

Verwenden Sie GetSystemPowerStatus , um den Wert von oben genannte Struktur.

Übrigens können Sie auch mit den anderen Feldern der Struktur experimentieren; Vielleicht können Sie einige nützliche Muster finden, die Ihnen eine Kombination von Werten verschiedener Felder geben, damit Sie zuverlässig erkennen können, ob die Anwendung auf einem Laptop läuft oder nicht.

    
Nawaz 31.01.2011, 10:02
quelle
9

Ich glaube nicht, dass es eine Standardmethode gibt, um zu überprüfen, ob die Anwendung auf einem Laptop läuft, aber ich denke, es gibt auch keine Standard-Begründung dafür, dass man das wissen muss.

Der Punkt ist auch, dass sich ein Laptop nicht so sehr von einem Desktop unterscheidet: Es gibt Laptops, die niemals bewegt werden, und ich denke, es wäre möglich, einen Desktop mit einer eingebetteten USV (als Batterie?) zu bauen / p>

Ich denke, Sie sollten herausfinden, ob es ein Laptop ist, der die Funktionen verwendet, die Sie brauchen, um einen Laptop einzuchecken:

  • Möchten Sie wissen, ob es sich um einen Laptop handelt, da sich Ihre Anwendung anders verhalten muss, wenn der Computer verschoben werden kann? Überprüfen Sie dann, ob eine Batterie eingesteckt ist.

  • Möchten Sie wissen, ob es ein Laptop ist, um zu sehen, ob Hardware geändert werden kann? In diesem Fall überprüfen Sie das Motherboard-Modell oder fragen Sie mit einem Dialogfeld.

  • Musst du es überprüfen, um zu wissen, ob es zu lange verbrennt, wenn es zu intensiv benutzt wird? Überwachen Sie einfach die Temperatur ...

peoro 31.01.2011 10:01
quelle
4

Ich glaube nicht, dass es eine zuverlässige Möglichkeit gibt, dies zu erkennen.

    
David Heffernan 31.01.2011 09:59
quelle
3

Scheinbar ist das versteckte Problem, dass die Laptops der Firma normalerweise nicht genug Speicher haben, aber die Desktops der Firma. Vergleichen Sie den Speicher, der für den installierten Speicher verwendet wird, um dieses spezielle Problem zu beheben: EnumProcesses() und GetProcessMemoryInfo sagt Ihnen den ersten; GetPhysicallyInstalledSystemMemory() sagt dir die Sekunde.

Wenn sie zu nah sind, können Sie den Benutzer darüber informieren, dass 73 Prozesse mit 2,5 GB ausgeführt werden, aber nur 2 GB RAM vorhanden sind. Dies ist ein berechtigter Grund dafür, dass Ihr Programm nicht startet.

    
MSalters 31.01.2011 14:08
quelle
2

In der MSDN wird die API für Anwendungen mit Stromversorgungs- und Gerätefunktionen erläutert hier

Sie könnten auch andere Dinge überprüfen wie:

  • Ist die Batterie angeschlossen?
  • Ist das Trackpad verbunden?
  • Ist die PC-Karte installiert?
  • Hat eine bestimmte Art von CPU (Low Power, Atom, etc)
  • Hat einen einzigartigen Bildschirm für den Laptop.
  • Laptop Hardrive ist 3,5 "

Wenn eine bestimmte Anzahl der obigen Aussagen zutrifft, können Sie davon ausgehen, dass Sie einen Laptop haben.

Sie können den Benutzer auch einfach bei der Installation fragen ....

    
T33C 31.01.2011 10:04
quelle
1

Hier finden Sie eine Reihe anderer Antworten und Links, die Sie für diese Frage nützlich finden könnten:

Wie erkennt man, wenn der Laptop läuft? Batterien?

Wie kann ich feststellen, ob ein Benutzer? benutzt einen Laptop

Letzteres diskutiert auch WMI, während die Antwort auf .NET zentriert ist. Sie können WMI aus Delphi verwenden.

    
Lloyd 31.01.2011 09:57
quelle

Tags und Links