Announcement

Collapse
No announcement yet.

PocketPC Process.Start

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • PocketPC Process.Start

    Hallo NG,

    weiss jemand, wie man codetechnich im PDA den Explorer aufruft, damit dieser ein *.jpg anzeigt.

    In C#.NET gibt's für PC-Applications Process.Start

    Gibt's das - oder ähnliches - auch für den Pocket?

    Danke im Voraus!

    Michael Strauß

  • #2
    Hallo,

    leider gibt es ja die Process-Klasse nicht im CF, deshalb mußt dir anders helfen.

    Ich hätte da 2 Möglichkeiten für dich, die du nutzen könntest.

    1.) Du installiert das OpenNetCF Framework, welches eine Menge an Funktionen implementiert, die im CF fehlen. Du findest das OpenNetCf unter www.opennetcf.org

    2.) Wenn du nicht noch ein zusätzliches Framework auf deinen PDA installieren willst, dann solltest du dir den Code des OpenNetCf anschauen, da kannst du sehen, wie die Funktion Process.Start implementiert worden ist.

    Ich würde auf jeden Fall die erste Lösung vorziehen, da das OpenNetCF eine Menge an zusätzlichen Funktionen bietet, die bei der Entwicklung von Anwendungen für den Pocket PC sehr hilfreich sind. Besonders weil die Klassen an die Namensgebung und der Syntax des normalen Frameworks angelegt sind.

    Viele Grüsse
    Jör

    Comment


    • #3
      Hallo Jörg,

      danke für den Tip.

      Ich werde es mir mal anschauen, ich weiss allerdings nicht, ob ich bei all meinen Kunden wirklich dieses 2. framework installieren will bzw. kann.

      Gruß

      Michae

      Comment


      • #4
        Hallo Michael,

        Du kannst mit Compact Framework auch wie folgt ein externes Programm starten:
        <br />
        [DllImport("coredll.Dll")]
        private static extern int CreateProcess(string strImageName, string strCmdLine, IntPtr pProcessAttributes, IntPtr pThreadAttributes , int bInheritsHandle, int dwCreationFlags, IntPtr pEnvironment, IntPtr pCurrentDir, Byte[] bArray,
        ProcessInfo oProc);
        <br />
        ProcessInfo pi = new ProcessInfo();
        CreateProcess(@"\Windows\Desktop\CEExplorer.exe",
        "",
        IntPtr.Zero,
        IntPtr.Zero,
        0,
        0,
        IntPtr.Zero,
        IntPtr.Zero,
        new Byte[128],
        pi);
        <br />
        public class ProcessInfo
        {
        public int Process;
        public int Thread;
        public int ProcessID;
        public int ThreadID;
        }
        <br />
        Das ist jetzt eine Lösung in C#. Man kann das aber alles recht einfach auf VB.NET ändern. Leider bleibt hier irgendwie die Formatierung nicht bestehen.
        <br />
        Gruß
        Danie

        Comment


        • #5
          Hallo Daniel,

          danke für die Info, es funktioniert!

          Für VB-Fans:

          z.B. in Allgemein.vb:
          Declare Function CreateProcess Lib "coredll.dll" (ByVal strImageName As String, ByVal strCmdLine As String, ByVal pProcessAttributes As IntPtr, ByVal pThreadAttributes As IntPtr, ByVal bInheritsHandle As Integer, ByVal dwCreationFlags As Integer, ByVal pEnvironment As IntPtr, ByVal pCurrentDir As IntPtr, ByVal bArray() As Byte, ByVal oProc As ProcessInfo) As Integer

          z.B. Eigene Klasse:
          Public Class ProcessInfo
          Public Process As Integer
          Public Thread As Integer
          Public ProcessID As Integer
          Public ThreadID As Integer
          End Class

          Aufruf:
          Dim pi As ProcessInfo = New ProcessInfo
          Dim ByteArray(128) As Byte
          CreateProcess("\Windows\pimg.exe", Datei, IntPtr.Zero, IntPtr.Zero, 0, 0, IntPtr.Zero, IntPtr.Zero, ByteArray, pi)

          Leider habe ich noch ein folgendes Problem!

          Ich will ja mit dem Pocket-Imaging-Programm (pimg.exe) ein jpg-Bild anzeigen. Das klappt allerdings nur mit manchen Bildern! Die jpg's werden bei uns im Haus (von einer anderen Anwendung) produziert, und sind in ihren Parametern (Auflösung, Farbe .. .etc) exakt gleich. Trotzdem funktioniert der Aufruf über mein PocketProgramm nicht bei allen Bildern! Es kommt dann eine Fehlermeldung von dem pimg.exe ("Fehler beim Laden des Bildes!"). In meiner Anwendung wird kein Fehler aufgeworfen. Wenn man die Bilder direkt über den Datei-Explorer anklickt, so kann das Imaging-Programm diese anzeigen, die Dateien sind also in Ordnung.

          Das verstehe ich nicht! Ich dachte an ein Freigabe-Problem, und habe z.B. in meiner Anwendung die Bilder nicht angezeigt -> trotzdem kein Erfolg.

          Vielen Dank für die Hilfe.

          Michael Strau&#223

          Comment

          Working...
          X