exe ausführen unter Windows CE


wolli2003

Grünschnabel
Hallo,

versuche eine einfache Anwendung für Windows CE zu schreiben, die einfach nur einige Programme startet. Dabei finde ich im Forum immer wieder den Code

Process myPro = new Process();
myPro.StartInfo.FileName = "\\windows\\ceplayer.exe";
//myPro.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
myPro.Start();

Das funktioniert aber nicht. Der Compiler (ich arbeite mit Visual Studio .NET 2003) meldet mir den Fehler

G:\Visual Studio Projects\SmartDeviceApplication1\SmartDeviceApplication1\Form1.cs(114): The type or namespace name 'Process' could not be found (are you missing a using directive or an assembly reference?)

Kann mir jemand weiterhelfen? Bin in C# leider absoluter Anfänger und finde keine andere Möglichkeit, für Windows CE ein Programm zu schreiben.

Danke
Wolli
 

wolli2003

Grünschnabel
Cosmo, danke für deinen Tip. Aber daran liegt es nicht, das hatte ich auch schon probiert. Norbert hat wohl recht, dass es die Klasse Process in dieser Umgebung nicht gibt. Ich versuche mal mit OpenNetCf klar zu kommen, obwohl ich noch nicht weiß, wie ich den Namespace OpenNETCF in Visual C# einbinden kann. Bis jetzt erkennt er ihn jedenfalls noch nicht.

Gruß
Wolli
 

Christian Kusmanow

Erfahrenes Mitglied
wolli2003 hat gesagt.:
Norbert hat wohl recht, dass es die Klasse Process in dieser Umgebung nicht gibt.
Wenn Du wüsstest wie oft er recht hat, das macht mir langsam angst. :p :D
wolli2003 hat gesagt.:
[...] obwohl ich noch nicht weiß, wie ich den Namespace OpenNETCF in Visual C# einbinden kann
Weil man erst die Referenz auf die DLL im VS einstellen muss. ;)
Im Solution Explorer machst Du einen Rechtsklick auf 'References', wählst 'Add Reference...' aus und mit 'Browse...' wählst Du letztendlich deine DLL aus.
Danach die Namspaces mit using einbinden und daruber freuen. :)

MfG, cosmo
 

wolli2003

Grünschnabel
Hallo Norbert,

danke für deinen Tip. Habe mir das Smart Device Framework gezogen, komme aber nicht an OpenNETCF. Diagnostics heran. Muss man da nicht irgend eine DLL einbinden? Komme komplett aus der C++ Welt (Visual C++ und Borland sind kein Problem), aber mit dem C# habe ich doch so meine kleinen Probleme.

Im Solution Explorer sehe ich unter References folgende Objekte:
Interop.SHDocVw
MSCorLib
OpenNETCF
OpenNETCF.Data
OpenNETCF.Drawing
OpenNETCF.Net
OpenNETCF.Phone
OpenNETCF.VisualBasic
OpenNETCF.Web.Services2
OpenNETCF.Windows.Forms
OpenNETCF.WindowsCE.Forms
OpenNETCF.Xml
SDFInst
SDFProjWiz
SmartDeviceFramework
System
System.Data
System.Drawings
System.Windows.Forms
System.XML

Nach meiner Einschätzung sind die doch wohl fast alle überflüssig. Wo versteckt sich denn die relevante Diagnostics damit ich an die Process-Klasse komme?

Habe im Code zusätzlich die usings eingebaut:

using OpenNETCF;
using OpenNETCF.Diagnostics;

Aber der Compiler will davon einfach nichts wissen.

Bin dir für deine Hilfe sehr dankbar.

Gruß
Wolli
 

Norbert Eder

Erfahrenes Mitglied
Die einzelnen Klassen befinden sich nicht zwangsweise in den Teil-Namespaces. OpenNETCF ist eine freie Implementierung, die sich an das Compact-Framework hält und einfach einige Dinge erweitert.

Unter http://www.opennetcf.org/library/ findest du eine Auflistung der Namespaces die zur Verfügung stehen.

Als Anhaltspunkt kann ich dir folgendes mit auf den Weg geben:

Namespace: OpenNETCF.ToolHelp
Class: ProcessEntry

Von da solltest du dich weiterarbeiten können.
 

wolli2003

Grünschnabel
Jungs,

ich habs endlich geschafft. An Cosmo und Norbert nochmals besten Dank. Schön dass einem hier im Forum so schnell und kompetent geholfen wird.

Für alle anderen, die das Problem auch einmal haben, unter Windows CE aus einem Programm ein anderes aufzurufen, hier noch mal kurz der Lösungsweg:

- den von Norbert empfohlenen OpenNETCF Framework downloaden und installieren (steckt komplett in einer MSI-Datei -> einfache Installation)
- Dann in MS Visual Studio .NET 2003 unter "File->New->Projekt" ein Visual C# Projekt und im rechten Fenster die OpenNETCF Application wählen.
- Im nächsten Dialog links "Windows CE" auswählen und rechts die Art der gewünschten Anwendung (habe mich hier für eine Konsolenanwendung entschieden, weil ich die Oberfläche nicht benötige)
- Damit sind die wichtigsten Schritte schon durchgeführt, die OpenNETCF Klassen stehen ab jetzt zur Verfügung
- Für den Programmaufruf noch das "using OpenNETCF.ToolHelp" einbinden und der Quellcode für den Programmstart sieht dann wie folgt aus:

Process myPro = new Process();
myPro.StartInfo.FileName = "\\windows\\ceplayer.exe";
myPro.Start();

- Dann das ganze zur EXE bilden
- Auf dem Windows CE Gerät muss mindestens die OpenNETCF.dll mit bereitgestellt werden. Bei Oberflächen-Anwendungen natürlich auch noch die zusätzlichen .Forms und Drawings DLLs (packt der Compiler aber schon mit ins Verzeichnis der exe)
- Das wars (eigentlich ganz simpel, wenn man weiß wie's geht)

Gruß
Wolli
 

kaiserrudi

Grünschnabel
Hi.
Ich hab folgendes problem: ich möcht genau das erreichen, was hier besprochen wurde, eine exe aus einer andren heraus starten. ich hab jedoch weder ahnung ;-) noch die geforderten programme. also meine frage: kann einer von euch mir schnell eine solche .exe datei für Win CE machen? wäre voll cool. wenn ja, einfach kurz melden, dann geb ich die pfade un dateinamen durch.
ich bedank mich schomma
lg
kaiserrudi