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?
Hat denn keiner ne Idee? Oder wie man die Konsole vieleicht rechts unten in die Taskleiste schieben kann, sozusagen minimieren?
Versuchs mal mit der start-Anweisung aus einem .bat-File. Dokumentation in der XP-Hilfe: start dann unter Full-text matches nach Start gucken...
Du kannst ja versuchen, das Programm als Win API Anwendung zu kompillieren, dann wird kein Konsolefenster erzeugt. MfG Mark
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.
@noch ein gast Windows kann das doch - was gibst du da für unsinnige Tipps?
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ß...
Die ursprüngliche Frage war:
1 | Es funktioniert auch wunderbar, nur nervt es mich, |
2 | dass immer die Eingabeaufforderung dabei geöffnet bleibt. |
3 | Kann man dies irgendwie umgehen, so dass das Programm |
4 | 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.
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.
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.
Mit Notepad funktioniert das Skript, mit dem Rechner (calc.exe) komischerweise nicht. 'Ne Ideem warum?
Jupp wrote: > Mit Notepad funktioniert das Skript, mit dem Rechner (calc.exe) > komischerweise nicht. 'Ne Ideem warum? Der wird sich selbst restoren.
Huhu Gibt es da auch eine Möglichkeit den Prozess wieder hervorzuholen, ohne dass ein neuer Prozess gestartet wird? Lieber Gruss
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.
Hum...ok..danke...ja bin auf der Suche danach, aber wird wohl noch recht kompliziert sein...
>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
Was steht denn bei dir in Zeile 2? Poste am besten das ganze Skript.
Hi,
1 | var Shell = new ActiveXObject("WScript.Shell"); |
2 | 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
erob wrote: > Hi, > >
1 | > var Shell = new ActiveXObject("WScript.Shell"); |
2 | > Shell.Run('Laufwerköffner Programm.exe', 0); |
3 | > |
> > 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);
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.