Laden...

Dokumentation zum Windows-API-Code-Pack gesucht

Erstellt von LittleTester vor einem Jahr Letzter Beitrag vor einem Jahr 579 Views
L
LittleTester Themenstarter:in
158 Beiträge seit 2019
vor einem Jahr
Dokumentation zum Windows-API-Code-Pack gesucht

Ich suche die Dokumentation zum Windows-API-Code-Pack. Ich würde gerne nachlesen, ob es dort eine Funktion gibt, um das Energieschema von Windows auszulesen. Scheinbar gibt es da nämlich was:
https://stackoverflow.com/a/7457150

Auf der verlinkten Seite von Microsoft stehen zwar die Funktionen, aber nicht, wie ich diese anwenden muss. Keine Beispiele, nix.
https://learn.microsoft.com/de-de/windows/win32/power/power-management-functions?redirectedfrom=MSDN

Im Git-Repository gibt es zwar unter anderem eine Demo-App unter source/Samples/PowerMgmtDemo/CS/, aber mit der kann ich nichts anfangen und in der Hilfedatei unter documentation/Windows API Code Pack Help.chm gibt es zwar ein Inhaltsverzeichnis, aber wenn man sich da durch klickt erscheint im rechten Fenster kein Inhalt.

Generell soll das API-Code-Pack mächtig und hilfreich sein, so dass sich das wohl echt lohnt die Funktionen da drin zu kennen und anwenden zu können.

Vielleicht noch als Randnotiz:
Ich habe bereits funktionierenden Code, aber der funktioniert nur, wenn die Anwendung explizit als Administrator aufgerufen wird. (Mit Adminrechten am System angemeldet zu sein reicht nicht. Gbit eine Exception)


public static string GetSystemEnergySettingState()
{
    var searcher = new ManagementObjectSearcher(@"\\.\root\cimv2\power", "SELECT * FROM Win32_PowerPlan WHERE IsActive = True");
    using ManagementObjectCollection managementObjectCollection = searcher.Get();
    ManagementObject managementObject = managementObjectCollection.OfType<ManagementObject>().First();
    string SystemEnergySettingState = managementObject["ElementName"].ToString() ?? "Default";
    return SystemEnergySettingState;
}

Das gleiche Problem hatte ich mal, als ich auslesen wollte, ob Bitlocker aktiviert ist oder nicht. Damals bin ich dann auf den verlinkten Code, basierend auf dem Windows-API-Code-Pack-1.1 gestoßen, den ich aber nur kopiert habe. Wie hat der damalige Autor rausgefunden, wie er den Code schreiben muss? Wie geht man sowas an?
https://stackoverflow.com/a/41310139

IDE: Visual Studio 2022
Sofern nicht anders genannt basieren meine Projekte auf C# und .net 6

16.807 Beiträge seit 2008
vor einem Jahr

[Hinweis] Wie poste ich richtig? gilt auch für Dich und dazu gehört auch, dass man einen Titel nimmt, in dem man nicht seinen eigenen Frust ablässt.
Was glaubst Du wie das Forum aussehen würde, wenn jede:r einen Titel ("Read the fu**ing manual" Würde ich ja gerne) wie Du wählst - und wir müssen es korrigieren. Danke.

Völlig unnötig, dass ich jetzt Deinen Titel anpassen muss. Meine Güte....

L
LittleTester Themenstarter:in
158 Beiträge seit 2019
vor einem Jahr

Sorry, wollte nur das ironisch aufgreifen, was man in diversen Foren (so wortwörtlich hier nicht, das stimmt) so unsanft gerne an den Kopf geworfen bekommt.
Sollte echt nicht frustriert klingen und war auch nicht frustriert gemeint. Sollte zum Ausdruck bringen, dass ich mir bereits echt Mühe gegeben habe eine Dokumentation zu finden, zu lesen und zu verstehen.

IDE: Visual Studio 2022
Sofern nicht anders genannt basieren meine Projekte auf C# und .net 6

4.931 Beiträge seit 2008
vor einem Jahr

Tja, als Software-Entwickler muß man sich halt viele Dinge selbst aneignen.

Zum einen sind die PowerManagement-Funktionen Teil der WinAPI, d.h. der direkte Zugriff darauf geht nur nativ (z.B. per C oder C++), für C# benötigt man P/Invoke-Aufrufe.
Aber da dies vom Windows-API-Code-Pack schon gemacht wurde, kann man diese auch von C# aus nutzen.

Im Sample-Code in "Window1.xaml.cs" gibt es die Methode GetPowerSettings, in der der Zugriff auf die Werte über die (statische) Klasse PowerManager passiert.

L
LittleTester Themenstarter:in
158 Beiträge seit 2019
vor einem Jahr

Einmal mehr ein Dankeschön für dich.
Das löst mein aktuelles Problem, aber wie / wo kann ich nachschlagen, was mir das Pack noch alles so bietet und wie ich es anwende? Ich schätze nicht für alles gibt es eine Demoanwendung? Wie geht man mit Nu-Get Paketen um zu denen sich keine (ausreichende) Dokus finden, bzw. schlecht dokumentiert sind? Ist ja eine ganz allgemeine Sache.

IDE: Visual Studio 2022
Sofern nicht anders genannt basieren meine Projekte auf C# und .net 6

4.931 Beiträge seit 2008
vor einem Jahr

Also ich habe die Hilfedatei bei mir öffnen können (und es zeigt mir auch alle Inhalte an) - ich habe aber festgestellt, daß im Verzeichnisnamen (des gesamten Pfads) kein Sonderzeichen (wie # oder %) vorkommen darf.

Die meisten NuGet-Pakete basieren auf Open Source Projekten - oder lassen sich zumindestens mit ILSpy (oder einem entsprechend anderem Tool) dekompilieren.
Und dann schreibt man sich ein paar kleine Testanwendungen und probiert die Methoden aus (anhand der Namen und Parameter kann man ja den Zweck erahnen).

16.807 Beiträge seit 2008
vor einem Jahr

99% Deines Devs Leben ist: ausprobieren, weil Zeug unbekannt ist (warum auch immer).
Deswegen ist es ein Ingenieurbasierter Job und kein "Rezept-Job".

Wie effizient Du an die Infos kommst und diese anwendest: genau das ist das, was Dich zum Entwickler macht.
Verabschiede Dich von dem Gedanken, dass Du meistens eine Doc hast. Das ist in den aller aller wenigsten Fällen vorhanden.

L
LittleTester Themenstarter:in
158 Beiträge seit 2019
vor einem Jahr

Danke euch. Auch für das Tool. Direkt runtergeladen.

IDE: Visual Studio 2022
Sofern nicht anders genannt basieren meine Projekte auf C# und .net 6

M
368 Beiträge seit 2006
vor einem Jahr

Wie geht man sowas an? WIE der damalige Autor auf den Code gekommen ist (trial and error, Doku gelesen,...) wird sich wohl kaum rekonstruieren lassen. Deswegen machen sinnvolle Namensgebungen Sinn: um das Ändern/Erweitern/Nutzen/... eines Codes/ einer API/... zu erleichtern. Eine gute und aktuelle Dokumentation mitzuliefern ("Read the fine manual") ist trotzdem nicht falsch: Twiiter-Thread von RapidAPI

Goalkicker.com // DNC Magazine for .NET Developers // .NET Blogs zum Folgen
Software is like cathedrals: first we build them, then we pray 😉