Autor Beitrag
Snoop007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 50



BeitragVerfasst: Fr 15.11.02 15:38 
hi,
ich möchte das handle auf die batterie haben.
ich muss dazu das handle mit createfile erhalten
was gebe ich als filename ein ?
wenn ich eine pipe erstellen möchte gebe ich \\.\pipe an
kann mir einer helfen ?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 15.11.02 16:02 
Ich weiß nicht, was du vor hast aber kuck mal hier: MSDN Suchergebnis.
Snoop007 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 50



BeitragVerfasst: Fr 15.11.02 17:55 
ich will die funktion
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
DeviceIoControl(
  (HANDLE) hDevice,                // handle to battery
  IOCTL_BATTERY_QUERY_INFORMATION, // dwIoControlCode
  (LPVOID) lpInBuffer,             // input buffer
  (DWORD) nInBufferSize,           // size of input buffer
  (LPVOID) lpOutBuffer,            // output buffer
  (DWORD) nOutBufferSize,          // size of output buffer
  (LPDWORD) lpBytesReturned,       // number of bytes returned
  (LPOVERLAPPED) lpOverlapped      // OVERLAPPED structure
);

verwenden.
Damit ich das handle auf die batterie bekomme, muss ich mit createfile arbeiten

was muss ich nun in createfile als filename angeben ?

müsste ich eine pipe schreiben, wüsste ich es ( wie oben erwäht )
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 15.11.02 18:04 
Kuck mal, ob du hier weiter kommst: IOCTL_BATTERY_QUERY_INFORMATION. Ich habe da schon etwas rumgekramt, aber leider nichts gefunden, wie du an das hande kommst. Eventuell erwischt du ja den richtigen Link.
Snoop007 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 50



BeitragVerfasst: Fr 15.11.02 18:09 
ich habe bei msdn auch schon gesucht, leider habe ich auch nichts gefunden, deswegen frage ich ja hier an :D

ich habe auch erst die funktion bei msdn gefunden, meine delphi version hat die gar nicht auf lager :(
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 15.11.02 18:19 
Hol dir mal von den Jedis die WinAPi-Übersetzungen, die sind recht vollständig. Da müßten die drin sein, dann mußt du sie nicht selber übersetzen. Bei so etwas exotischen API's ist Borland immer recht faul mit Übersetzungen.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 15.11.02 18:52 
Luckie hat folgendes geschrieben:
Bei so etwas exotischen API's ist Borland immer recht faul mit Übersetzungen.

Manche Sachen würde ich nicht als exotisch bezeichnen. Borland ist schlichtweg großartig im Herausbringen der jährlich neuen Delphi-Version. Aber dann gibt´s meist ein Service-Pack, ein paar Fixes (die man u.U. noch selbst vornehmen muss), und das war´s dann.

Es kann doch nicht sein, dass Besitzer älterer Versionen z.B. die LUNA-Probleme mit WinXP u.ä. selbst fixen müssen (Listview). Und selbst das geht nur, wenn man keine Standard- oder Personal-Edition hat, bei der die Sourcecodes ja nicht dabei sind.
Snoop007 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 50



BeitragVerfasst: Fr 15.11.02 19:51 
@lucki kanst du mir einen link zu den jedis geben, ich weiss gar nicht was das ist ? :shock: :oops: danke :)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 15.11.02 20:01 
DaFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189



BeitragVerfasst: Sa 16.11.02 02:19 
Hi.

Du hast nicht geschrieben was Du mit dem Handle anfangen willst, deshalb frage ich mal ganz doof:
Führt die Funktion GetSystemPowerStatus nicht zum Ziel?

Gruß,
Markus
Snoop007 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 50



BeitragVerfasst: Sa 16.11.02 16:33 
ich will die mAh der Batterie haben deswegen muss ich erst das handle haben und dann die oben beschriebene funktion ausführen ...

falls ich mich irren sollte, verbesser mich bitte ! :)
DaFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189



BeitragVerfasst: Sa 16.11.02 19:19 
Hi!

Okay, dann geht das natürlich nicht.
Du musst wohl die vorhandenen Batterien enumerieren um das Handle dann an CreateFile() übergeben zu können.

Zitat:

Enumerating Battery Devices

To enumerate the battery devices currently on the computer, use the SetupDiGetClassDevs function. The ClassGuid parameter is a pointer to GUID_DEVICE_BATTERY (defined in batclass.h). To enumerate all of the batteries, set the Enumerator parameter to NULL and set the Flags parameter to DIGCF_PRESENT | DIGCF_INTERFACEDEVICE. To obtain the names of the battery devices, use the SetupDiEnumInterfaceDevice and SetupDiGetInterfaceDeviceDetail functions on the data returned. To open a file handle for each of the battery devices, call the CreateFile function with these names.

(msdn.microsoft.com/l...tion.asp?frame=true)


Gruß,
Markus
Snoop007 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 50



BeitragVerfasst: Sa 16.11.02 19:29 
oh wei :shock: :shock: :shock:
danke :) muss ich wohl überleden haben

das wird ja was werden ! :shock: :shock: :shock: :shock:
DaFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189



BeitragVerfasst: Sa 16.11.02 20:39 
Noch ein kleines PS zum GUID_DEVICE_BATTERY: ['{72631E54-78A4-11D0-BCF7-00AA00b7B32A}']
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 17.11.02 01:33 
Was hilft hier eien CLSID oder GUID aus der Registry? Die sieht bei jedem anderst aus und davon gibt es dutzende in der Registry. :roll:
DaFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189



BeitragVerfasst: So 17.11.02 05:00 
Hi.

Wir reden hier von einem ClassGUID zugehörig zu einem Device Driver. Dieser sollte bei einem Battery Driver immer {72631e54-78a4-11d0-bcf7-00aa00b7b32a} sein.
Suche battery.inf auf und Du wirst feststellen, dass auf diesem x-beliebigen System genau diese ClassGUID zu finden ist.

Siehe auch: Installing a Battery Driver

Gruß,
Markus
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 17.11.02 10:46 
OK überzeugt. :oops: