www.mikrocontroller.net

Forum: PC-Programmierung . exe im hintergrund ausführen


Autor: ProblemBär (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute.

Ich hab mir eie kleines Programm in C++ geschrieben, was nichts weiter 
macht als ständig Werte ausm PC auszulesen und diese über RS232 an einen 
uC zu schicken. Es funktioniert auch wunderbar, nur nervt es mich, dass 
immer die Eingabeaufforderung dabei geöffnet bleibt. Kann man dies 
irgendwie umgehen, so dass das Programm nur im Hintergund läuft?

Autor: ProblemBär (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat denn keiner ne Idee? Oder wie man die Konsole vieleicht rechts unten 
in die Taskleiste schieben kann, sozusagen minimieren?

Autor: Daniel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuchs mal mit der start-Anweisung aus einem .bat-File.
Dokumentation in der XP-Hilfe: start dann unter Full-text matches nach 
Start gucken...

Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst ja versuchen, das Programm als Win API Anwendung zu 
kompillieren, dann wird kein Konsolefenster erzeugt.

MfG Mark

Autor: noch ein gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Programm kann auch über eine der Win32-API-Funktionen 
(AllocConsole/FreeConsole ect.) die verwendete Konsole freigeben - nur 
wird es dann etwas schwer, das Programm zu steuern, weil ja nichts mehr 
da ist, wo man draufklicken kann und auch nichts mehr da ist, dem man 
per Tastatur mitteilen kann, daß es aufhören so..

Besser wäre es, das Programm als Dienst zu implementieren ("Service"), 
das aber erfordert schon etwas mehr Programmierkenntnisse. Dienste sind 
unsichtbare Prozesse (unix-speak "daemon"), die im Hintergrund laufen 
und sich auch nicht beenden, wenn sich der Benutzer abmeldet. Über den 
Dienstmanager (services.msc) können Dienste gesteuert werden.

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@noch ein gast

Windows kann das doch - was gibst du da für unsinnige Tipps?

Autor: noch ein gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Windows kann was doch? Inwiefern soll mein Tip unsinnig sein?

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noch ein gast wrote:
> Windows kann was doch? Inwiefern soll mein Tip unsinnig sein?

Beitrag "Re: exe im hintergrund ausführen"

Auf die Schnelle:

- öffne eine DOS-Box
- tippe

   start /?

dann siehst du, was der doofe cmd.exe alles kann, was aber kaum einer 
weiß...

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die ursprüngliche Frage war:
Es funktioniert auch wunderbar, nur nervt es mich, 
dass immer die Eingabeaufforderung dabei geöffnet bleibt. 
Kann man dies irgendwie umgehen, so dass das Programm 
nur im Hintergund läuft?

Da hilft auch die Verwendung von start nicht, denn auch da bleibt das 
Konsolenfenster der Applikation immer geöffnet.

Daß der Threadstarter das geöffnete Konsolenfenster 
("Eingabeaufforderung", von manchen fälschlicherweise als "DOS-Box" 
bezeichnet) selber in die Taskleiste minimieren kann und auch den Focus 
auf ein anderes Fenster setzen kann, sollten wir ihm schon zutrauen.

Autor: Uhu Uhuhu (uhu)
Datum:
Angehängte Dateien:
  • hide.js (298 Bytes, 390 Downloads)

Bewertung
0 lesenswert
nicht lesenswert
Ok, war wirklich nichts mit start. Versuchs mal damit:

    var Shell = new ActiveXObject("WScript.Shell");
    Shell.Run('notepad.exe', 0);

Schreib die zwei Zeilen in eine Datei mit Endung .js und führ die aus.

Das Skript terminiert sofort, während notepad nur noch im Taskmanager zu
sehen, bzw. zu killen ist...

Im Anhang ein kleines Helferlein, mit dem man jede Applikation in den 
Hintergrund verbannen kann.

Autor: Outi Outlaw (outlaw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Normalerweise kann man in den Eigenschaften die Eingabeaufforderung 
wieder schlißen lassen. Dabei müsstest Du im Prinzip nur ne Verknüpfung 
erstellen, dort konfigurieren und dann das Programm über diese 
Verknüpfung ausführen.

Ich bemutze diese Vorgehensweise z.B. bei meinen 
Datensicherungsbatschdateien, bei denen mich auch anfangs immer genervt 
hat, dass die Eingabeaufforderung offen geblieben ist.

Klappt seit Jahren und verscheidenen Windowsversionen einwandfrei.

Autor: Jupp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Notepad funktioniert das Skript, mit dem Rechner (calc.exe) 
komischerweise nicht. 'Ne Ideem warum?

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jupp wrote:
> Mit Notepad funktioniert das Skript, mit dem Rechner (calc.exe)
> komischerweise nicht. 'Ne Ideem warum?

Der wird sich selbst restoren.

Autor: Schnuffi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Huhu Gibt es da auch eine Möglichkeit den Prozess wieder hervorzuholen, 
ohne dass ein neuer Prozess gestartet wird?

Lieber Gruss

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde mal vermuten, das geht, indem man ihm die Message zum restoren 
schickt. Aber dazu braucst du natürlich irgend ein Vehikel, das das 
macht...

Der Taskmanager kanns jedenfalls nur, wenn der Prozeß im ersten Tab 
aufgelistet ist - aber das sollte ja gerade verhindert werden.

Ich versenke mit dieser Methode nur Teile, die ich definitiv - außer in 
der Prozeßliste - nicht sehen will, wie SSL-Tunnels.

Autor: Schnuffi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hum...ok..danke...ja bin auf der Suche danach, aber wird wohl noch recht 
kompliziert sein...

Autor: erob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Mit Notepad funktioniert das Skript, mit dem Rechner (calc.exe)
>komischerweise nicht. 'Ne Ideem warum?

hi,

genau das problem habe ich auch...

bei mir kommt ne meldung:

Skript: [verzeichnis]
Zeile: 2
Zeichen: 1
Fehler: Das System kann die angegebene Datei nicht finden.
Code: 80070003
Quelle: (null)

ich verstehe nicht warum die datei (programm) nicht gefunden werden 
kann?
der Pfad ist auf jedenfall richtig eingegeben!

need help
thx

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was steht denn bei dir in Zeile 2? Poste am besten das ganze Skript.

Autor: erob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
var Shell = new ActiveXObject("WScript.Shell");
Shell.Run('Laufwerköffner Programm.exe', 0);

Das Programm liegt im selben Verzeichnis wie das Programm notepad.exe 
(C:\windows).
Mit notepad.exe funktioniert es!

mfg

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
erob wrote:
> Hi,
>
>
> var Shell = new ActiveXObject("WScript.Shell");
> Shell.Run('Laufwerköffner Programm.exe', 0);
> 
>
> Das Programm liegt im selben Verzeichnis wie das Programm notepad.exe
> (C:\windows).
> Mit notepad.exe funktioniert es!
>
> mfg

Dann gib den Pfad vollständig an! Aber Achtung: \ hat in JS-Strings 
dieselbe Funktion wie in C. Du mußt sie entweder verdoppeln, oder 
einfach durch / ersetzen. Und weil Blanks im Pfad vorkommen, ist es eine 
gute Idee, den ganzen Pfad nochmal in " einzuschließen:

   Shell.Run('"c:/windows/Laufwerköffner Programm.exe"', 0);

anderenfalls würde versucht, c:/windows/Laufwerköffner mit dem Parameter 
Programm.exe zu starten.

Faustregel: Vermeide Leerzeichen in Pfaden, wenn du böse Überraschungen 
vermeiden willst...


Nachtrag: Evenuell funktioniert es auch so - ich habs aber nicht 
probiert:

   Shell.Run('"Laufwerköffner Programm.exe"', 0);

Autor: erob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank!!!!It WORKS!!!!

Endlich hats geklappt ich war schon fast am verzweifeln :D!!!
also dann mach ich mich ma gleich an die Arbeit mein Programm zu 
perfektionieren ^^.....

Mfg Erob

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.