![]() |
WinCE Batteriestatus in Delphi VCL Anwendung (über RDP)
Hallo zusammen,
ich bin verzweifelt auf der Suche nach einer Möglichkeit den Batteriestatus von WindowsCE, irgendwie in meine VCL Anwendung zu bekommen, bzw. überhaupt erstmal auf das Remotesystem in welcher Form auch immer. Entwicklungsumgebung ist derzeit: Delphi XE05, Anwendung läuft auf einem Handscanner (Datalogic SkorpioX3) über RemoteDesktopVerbindung aus WindowsCE 6.0. Remotesystem ist Windows Server 2003. Bisherige Ansätze waren: - mit VBS auf WinCE den BatterieStatus abfragen (scheint über die WinCE Registry zu funktionieren), in der Domäne in einen Netzwerkordner kopieren als txt..csv etc., dann über Delphi einfach aus dem Ordner die Daten abgreifen. (Läuft nicht, nur spartanisches VBS auf WinCE möglich, WinCE kann nicht in eine Domäne eingebunden werden) - Abfrage direkt durch das Remotesystem, idr. wohl möglich über die "Windows Management Instrumentation", aber auch diese gibt es auf WinCE nicht. - jede Menge wirres Rumgegoogle bei dem man immer auf VisualStudio + WinCE SDK aufmerksam gemacht wird. Auf VisualStudio oder andere Software habe ich keinen Zugriff und irgendwie muss das doch auch mit Bordmitteln gehen :| Über Denkanstöße oder auch -tritte würde ich mich freuen. Mfg Towmuz |
AW: WinCE Batteriestatus in Delphi VCL Anwendung (über RDP)
Mit Hausmitteln garnicht.
Delphi-Programme können nicht und ich vermute werden auch niemals auf WinCE laufen. (nichtmal WinRT oder das neuere Windows Phone sind in Planung) Du kannst maximal mit FreePascal (Lazarus und Co.) ein Programm für Windows CE schreiben, was direkt dort laufen kann. [add] Gibt es in WinCE auch eine "Aufgabenplanung" ? Dort dein VBS alle x Minuten aufrufen lassen und den Wert in eine Datei oder via TCP/IP an euer Programm schicken |
AW: WinCE Batteriestatus in Delphi VCL Anwendung (über RDP)
Zitat:
![]() |
AW: WinCE Batteriestatus in Delphi VCL Anwendung (über RDP)
Zitat:
Laut dieser ![]() |
AW: WinCE Batteriestatus in Delphi VCL Anwendung (über RDP)
@Himitsu
![]() Nach Lazarus werde ich mal schauen, Danke. Da der Prozessor aber ARM ist, wird das auch nicht ohne Weiteres funktionieren :) Da die Anwendung selbst ja auf einem normalen WinOS remote läuft bräuchte ich aber trotzdem noch irgendwas, womit CE und Server 2003 dann die Daten austauschen. [add] Wenn ich wüsste, wie ich an den Batteriestatus käme, dann hätte ich das so in etwa versucht. @Aviator Fällt wahrscheinlich aus, aber wenn ich nichts anderes finde, muss ich das wohl nochmal beim Admin vortragen :D Community Edition wahr ja auch für Unternehmensanwendungen nutzbar solange man sie nicht verkaufen möchte mein ich. @Bambini Es gibt ein SDK für .Net vom Hersteller, das sollte auch im neusten VS laufen. Wie gesagt, am besten und einfachsten wäre es, sowas wie die WMI vom normalen Windows zu haben, das man per VBS vom Remotesystem abfragen kann. Bisher hab ich allerdings nur so eine KlitzeAnleitung für das olle Miniwindows gefunden und dort die Shell verarbeitet scheinbar auch nur rudimentäre Dinge (Dateisystem, Programm ausführen etc.). |
AW: WinCE Batteriestatus in Delphi VCL Anwendung (über RDP)
Zitat:
Die vollen Lizenzbestimmungen können hier nachgelesen werden: ![]() Zitat:
|
AW: WinCE Batteriestatus in Delphi VCL Anwendung (über RDP)
Zitat:
Ich meinte, das du mit dem neuen Visual Studio überhaupt keine Programme mehr für WinCE bauen kannst, sondern nur noch für Windows Phone (<> WinCE). Wie man den Battery Status unter WinCE mit C# auslesen kann, zeigt Microsoft hier: ![]() ![]() |
AW: WinCE Batteriestatus in Delphi VCL Anwendung (über RDP)
Zitat:
![]() ![]() ![]() |
AW: WinCE Batteriestatus in Delphi VCL Anwendung (über RDP)
Zitat:
Zitat:
Zitat:
Im Ernst, Danke, dass schaue ich mir mal an. |
AW: WinCE Batteriestatus in Delphi VCL Anwendung (über RDP)
Zitat:
Das .NET für WinCE ist wieder etwas spezielles. Das nennt sich Compact Framework (CF) und ist eine sehr kleine Untermenge von .NET Daher bezweifele ich das die aktuellen VS das noch können. |
AW: WinCE Batteriestatus in Delphi VCL Anwendung (über RDP)
So hab ichs nun verbaut, vieleicht brauchts mal wer...
Für die Mini-Anwendung auf dem Handscanner mit Windows CE, wurden ![]() ![]() SharpDevelop 3.2 ist wohl die letzte Version, die das CompactFramework mit NET 3.5 unterstützt. Generelle Funktionsweise CE Anwendung C#, schreibt jede Minute den Batteriestatus in eine Ini.
Code:
In WinCE RDP-Verbindungseigenschaften noch die Ordnerfreigabe definieren und auf dem RD-System (WinServ2003 in dem Fall oder sonst irgendnem Win) in der DelphiAnwendung über einen Timer die Ini auslesen.
using System;
using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using System.Runtime.InteropServices; using System.IO; using System.Threading; namespace JZPW1310_Battery { public class SYSTEM_POWER_STATUS_EX { public byte ACLineStatus; public byte BatteryFlag; public byte BatteryLifePercent; public byte Reserved1; public uint BatteryLifeTime; public uint BatteryFullLifeTime; public byte Reserved2; public byte BackupBatteryFlag; public byte BackupBatteryLifePercent; public byte Reserved3; public uint BackupBatteryLifeTime; public uint BackupBatteryFullLifeTime; } public partial class MainForm : Form { [DllImport("coredll")] private static extern uint GetSystemPowerStatusEx(SYSTEM_POWER_STATUS_EX lpSystemPowerStatus, bool fUpdate); public static void Main(string[] args) { System.Threading.Timer t = new System.Threading.Timer(TimerCb, null, 0, 60000); Console.ReadLine(); } private static void TimerCb(Object o) { try { SYSTEM_POWER_STATUS_EX status = new SYSTEM_POWER_STATUS_EX(); string dir = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); if (GetSystemPowerStatusEx(status, false) == 1) { // Console.WriteLine("BatteryLifePercent=" + status.BatteryLifePercent.ToString()); StreamWriter sw = new StreamWriter(dir + @"\battery.status"); sw.WriteLine("[BatteryStatus]"); sw.WriteLine("BatteryLifePercent=" + status.BatteryLifePercent.ToString()); sw.Close(); GC.Collect(); } } catch (Exception ex) { // Console.WriteLine(ex.Message + ' : ' + ex.StackTrace); } } } }
Delphi-Quellcode:
Fals das hier zu Detail- oder Erleuterungsarm erscheint, schreib ichs gern ausführlicher bzw. aufgeräumter, habe noch nicht viel Programmierforenerfahrung :).
uses IniFiles;
procedure Tfrm_bla_Programm.tmr1Timer(Sender: TObject); var ini: TIniFile; percent: Integer; caption: string; begin try begin ini := TIniFile.Create('\\tsclient\Files\Temp\battery.status'); caption := ini.ReadString('BatteryStatus', 'BatteryLifePercent', '') + ' %'; percent := StrToInt(ini.ReadString('BatteryStatus', 'BatteryLifePercent', '')); pb1.Position := percent; lbl1.Caption := caption; ini.Free; end; except on e: exception do begin pb1.Position := 100; lbl1.Caption := 'ERROR'; end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz