AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

WINCE Externes Programm starten

Ein Thema von Andidreas · begonnen am 27. Dez 2011 · letzter Beitrag vom 29. Dez 2011
Antwort Antwort
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

WINCE Externes Programm starten

  Alt 27. Dez 2011, 12:11
aloha...

ich hab vor eineiger zeit ein simple scanner gui für einen wince gerät entwickelt... bei dem gerät war es so das der scanner automatisch aktiv war... jetzt soll die software auf einem anderen gerät laufen bei dem der scanner erst aktiviert werden muss... hierzu muss lt. hardware doku einfach eine scannerwedge.exe gestartet werden... soweit so gut...

ich hab das ganze jetzt mal mit dem folgenden befehl versucht:
Code:
Sysutils.ExecuteProcess('/Application/ScanWedge.exe', ['','']);
hat den blöden nebeneffekt das er das programm startet, aber nicht in das aufrufende programm zurrückkehrt sondern wartet bis ich das aufgerufene programm beende :-/

hat jemand eine idee wie man unter wince ein programm im hintergrund mit starten kann, d.h.
programm 1 startet und ruft programm 2 auf und man kann mit beiden parallel arbeiten...
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: WINCE Externes Programm starten

  Alt 27. Dez 2011, 14:00
so für die wo's interessiert...

ich hab das problem über einen kleinen umweg gelöst, und zwar hab ich mir eine 2. anwendung erstellt die das programm startet welches den scanner aktiviert, sowie mein hauptprogramm, nachdem die beiden programme gestartet wurden beendet sich meine 2. anwendung selbsständig... anbei der code:

Code:
//******************************************************************************
// Apps Startern:                                                             *
// 1. Scanner starten                                                         *
// 2. Hauptprogramm starten                                                   *
//******************************************************************************

procedure Tstarterapp_form.TimerTimer(Sender: TObject);

var
kSI      : TStartUpInfo;
kPI      : TProcessInformation;

begin

     Timer.Enabled := False;
     CreateProcess(PWideChar('/Application/scanner.exe'), Nil, Nil, Nil, False, CREATE_NEW_CONSOLE, Nil, Nil, kSI, kPI);
     CreateProcess(PWideChar('/Application/programm1.exe'), Nil, Nil, Nil, False, CREATE_NEW_CONSOLE, Nil, Nil, kSI, kPI);
     Close;

end;
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald

Geändert von Andidreas (27. Dez 2011 um 14:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#3

AW: WINCE Externes Programm starten

  Alt 29. Dez 2011, 10:14
Zitat von Andidreas:
ich hab das ganze jetzt mal mit dem folgenden befehl versucht:
Code:
Sysutils.ExecuteProcess('/Application/ScanWedge.exe', ['','']);
hat den blöden nebeneffekt das er das programm startet, aber nicht in das aufrufende programm zurrückkehrt sondern wartet bis ich das aufgerufene programm beende :-/
Das ist der Zweck dieser Funktion. Siehe deren Beschreibung (nun gut, es steht etwas versteckt drin; da ExecuteProcess den ExitCode des Programms zurückgibt, muss sich dieses ja erst beendet haben).

Zitat von Andidreas:
hat jemand eine idee wie man unter wince ein programm im hintergrund mit starten kann, d.h.
programm 1 startet und ruft programm 2 auf und man kann mit beiden parallel arbeiten...
Der Standardweg unter Free Pascal für sowas ist TProcess . Siehe hierzu die Dokumentation und ein Eintrag im FPC Wiki.

Ganz wichtig: nicht auf die Idee kommen unter Windows CE / Windows Mobile StdIn/StdOut/StdErr Pipes zu verwenden. Das wird so weit ich weiß nicht unterstützt.

Zu deiner selbst gefundenen Lösung: warum machst du in deinem Hauptprogramm nicht einfach direkt beim Start ein

Delphi-Quellcode:
 CreateProcess(PWideChar('/Application/ScanWedge.exe'), Nil, Nil, Nil, False, CREATE_NEW_CONSOLE, Nil, Nil, kSI, kPI);
 // Wichtig: die in kPi übergebenen Handles schließen, damit du nicht unnötig Ressourcen verbrätst
 CloseHandle(kPi.hThread);
 CloseHandle(kPi.hProcess);
Hier wird nämlich nur gewartet, wenn du WaitForSingleObject(kPi.hThread, SomeTime); aufrufst (was ExecuteProcess intern macht).

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz