Ausschalten des Pocket-PCs
Batteriestatus bestimmen
Seriennummer des Gerätes auslesen
Speicherfunktionen
embedded VB – Ausschalten des Pocket-PCs 
Der folgende Code schaltet den PocketPC ab. (Tastensimulation des Ausschalters)
Public Declare Sub keybd_event Lib „coredll.dll“ (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Public const VK_OFF=&HDF
Sub PowerOff()
keybd_event VK_OFF, 0, 0, 0
keybd_event VK_OFF, 0, 2, 0
End Sub
embedded VB – Batteriestatus bestimmen 
Über die in der Pocket-API vorhandene Funktion GetSystemPowerStstusEx
kann man den Batterie-Staus des PocketPC abfragen.
Declare Function GetSystemPowerStatusEx Lib „coredll.dll“ (ByVal pstatus As String, update As Boolean) As Boolean
Public Function getBattStatus()
battStatus = Space(50)
battFlag = GetSystemPowerStatusEx(battStatus, True)
If battFlag = True Then
getBattStatus = AscB(MidB (battStatus, 3, 1))
else
getBattStstus=-1
End If
End Function
Da EmbeddedVB keine UDT unterstützt wird ein String als Pointer verwendet, um das Ergebniss der
Funktion zu speichern. Der zweite Parameter ist das Update-Flag. Hat es den Wert FALSE so gibt die
Funktion den letzten Wert zurück, der dem System bekannt ist, dieser kann einige Sekunden alt
sein, ist der Parameter TRUE, so wird versucht, den aktuellen Stand zu ermitteln.
Die Rückgabe-Daten der Funktion sehen wie folgt aus:
1 BYTE ACLineStatus; |
Spannungsstatus, zeigt an, ob Gerät per Netzteil oder Batterie betrieben wird.
|
||||||||||||
1 BYTE BatteryFlag; |
Batterie-Ladestatus
|
||||||||||||
1 BYTE BatteryLifePercent |
aktueller Füllgrad des Akku’s in Prozent, Wert zwischen 1 und 100 zeigt die Prozentzahl, der Wert 255 zeigt den Status „unbekannt“ an. |
||||||||||||
1 BYTE Reserved |
reserviert, immer 0. |
||||||||||||
4 BYTE BatteryLifeTime |
zeigt die verbleibende Akku-Entladezykluszeit in Sekunden an, der Wert &HFFFFFFFF zeigt den Status „unbekannt“ an. |
||||||||||||
4 BYTE BatteryFullLifeTime |
zeigt die gesamte Akku-Entladezykluszeit in Sekunden an, der Wert &HFFFFFFFF zeigt den Ststus „unbekannt“ an. |
||||||||||||
1 BYTE Reserved |
reserviert, immer 0. |
||||||||||||
1 BYTE BackupBatteryFlag |
Batterie-Status der Sicherungsbatterie, Flaginhalte siehe BatteryFlag |
||||||||||||
1 BYTE BackupBatteryLifePercent |
aktueller Verbrauchszustand der Sicherungsbatterie in Prozent, Wert zwischen 1 und 100 zeigt die Prozentzahl, der Wert 255 zeigt den Status „unbekannt“ an. |
||||||||||||
1 BYTE Reserved |
reserviert, immer 0. |
||||||||||||
4 BYTE BackupBatteryLifeTime |
zeigt die verbleibende Sicherungsbatterie-Entladezykluszeit in Sekunden an, der Wert &HFFFFFFFF zeigt den Status „unbekannt“ an. |
||||||||||||
4 BYTE BackupBatteryFullLifeTime |
zeigt die gesamte Sicherungsbatterie-Entladezykluszeit in Sekunden an, der Wert &HFFFFFFFF zeigt den Status „unbekannt“ an. |
embedded VB – Seriennummer des Gerätes auslesen 
Der dargestellte Beispielcode führt aus dem \windows-Verzeichnis CreateAssetFile.exe aus. Diese erzeugt im selben Verzeichnis eine Datei namens „cpqAssetData.dat“. In dieser Datei findet sich ab dem 976. Byte die Seriennummer des Gerätes.
Public Const GENERIC_READ = &H80000000
Public Const FILE_SHARE_READ = &H1
Public Const OPEN_ALWAYS = 4
Public Const FILE_ATTRIBUTE_NORMAL = &H80
Public Declare Function CreateProcess Lib „coredll.dll“ Alias „CreateProcessW“
(ByVal lpApplicationName As String, ByVal lpCommandLine As String, ByVal
lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, ByVal bInheritHandles
As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory
As Long, ByVal lpStartupInfo As Long, ByVal lpProcessInformation As Long) As Long
Public Declare Function CreateFile Lib „Coredll“ Alias „CreateFileW“
(ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long,
lpSecurityAttributes As String, ByVal dwCreationDisposition As Long, ByVal
dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Public Declare Function ReadFile Lib „Coredll“
(ByVal hFile As Long, ByVal lpBuffer As String, ByVal nNumberOfBytesToRead
As Long, ByVal lpNumberOfBytesRead As String, ByVal lpOverlapped As Long) As Long
Public Declare Function CloseHandle Lib „Coredll“ (ByVal hObject As Long) As Long
Private Sub Command1_Click()
Dim strAssetData As String
Dim lngBytesRead As Long
Dim hFile As Long
strAssetData = Space(976 + 64)
CreateProcess „\windows\CreateAssetFile.exe“, „“, 0, 0, 0, 0, 0, 0, 0, 0
hFile = CreateFile(„\Windows\cpqAssetData.dat“, GENERIC_READ, FILE_SHARE_READ, „“,OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0)
ReadFile hFile, strAssetData, 64 + 976, lngBytesRead, 0
CloseHandle hFile
MsgBox Mid(strAssetData, 489, 64)
End Sub
embedded VB – Speicherfunktionen 
- Belegten Speicher ermitteln (GlobalMemoryStatus)
Public Declare Sub GlobalMemoryStatus Lib „Coredll“ (ByVal lpBuffer As String)
Public Function GetFreeMemory() as long
Dim memStr As StringmemStr = Space(32)
GlobalMemoryStatus memStr
GetFreeMemory = AscB(MidB(f1, 5, 4))
End Function
- Freien Speicher ermitteln (GetDiskFreeSpaceEx)
Declare Function GetDiskFreeSpaceExW Lib „coredll.dll“ (ByVal lpDirectoryName As String, ByRef lpFreeBytesAvailableToCaller As Long, ByRef lpTotalNumberOfBytes As Long, ByRef lpTotalNumberOfFreeBytes As Long) As Boolean
Public Function GetFreeObjMem as long
Dim f1 As Long
Dim f2 As Long
Dim f3 As Long
GetDiskFreeSpaceExW „“, f1, f2, f3
GetFreeObjMem=f1
End Function