Hallo,
Ich möchte ein Programm unter Windoof schreiben, dieses soll aber im Hintergrund ablaufen und nicht das DOS-Fenster aufrufen!
(Es würde auch ein Befehl reichen, der dsa Fenster schliesst...)
Das Programm soll bei Systemstart aufgerufen werden und dann im Hintergrund laufen, bis zum shutdown des COmputers.
Kann mir da jemand helfen?
PS: OS ist WinXP und ich benutze Python 2.2.2
Danke schon mal im Vorraus
Roman
PS: Ich habe schon google und das Forum durchsucht, bin aber auf nichts gestossen, was mir wirklich geholfen hätte... Vielleicht hatte ich aber auch nur ein Brett vorm Kopf
Programm ohne DOS-Fenster laufen lassen
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Roman!Roman hat geschrieben:dieses soll aber im Hintergrund ablaufen und nicht das DOS-Fenster aufrufen!
[...]
PS: OS ist WinXP und ich benutze Python 2.2.2
1. Starte dein Programm nicht mit python.exe sondern mit pythonw.exe.
Das passiert automatisch, wenn du dein Python-Programm nicht mit der Endung ".py" sondern mit ".pyw" versiehst.
2. Du solltest dir eventuell mal überlegen, auf eine aktuellere Python-Version upzudaten.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Ich glaube eher, er meint einen Service. Das macht man mit win32service aus den Python for Windows Extensions http://starship.python.net/crew/mhammond/win32/
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
Hallo,
Danke erst mal für eure Antworten...
Ich möchte in der Tat einen Daemon (ich glaube, das nennt man so... Bin noch nicht so sicher mit der "Fachsprache" ) schreiben.
Also genau genommen einen Wecker, der mp3s abspielen soll. Der ist allerdings eine Konsolenanwendung, so dass man ihn nicht mit pythonwin starten sollte, oder?
Hier ist der Quellcode:
@ N317V:
Ja, ich glaube, unter Windows nennt man Daemons Dienste oder Services, oder? Dann ist es das, was ich brauche?
Ich lade gerade die Python for Windows Extensions runter, aber bei 56 K Internet dauert das eine Weile...
Und ich habe festgestellt, dass zwar ein Prozess begonnen wird, wenn ich das Programm indirekt (also über Python und dann F5) ausführe. Aber wenn ich das Programm mit der Konsole öffne, dann wird kein Prozess im Task-Manager angezeigt... Weiß jemand, warum das so ist?
Danke schon mal im Voraus für eure Antworten...
Roman
Danke erst mal für eure Antworten...
Ich möchte in der Tat einen Daemon (ich glaube, das nennt man so... Bin noch nicht so sicher mit der "Fachsprache" ) schreiben.
Also genau genommen einen Wecker, der mp3s abspielen soll. Der ist allerdings eine Konsolenanwendung, so dass man ihn nicht mit pythonwin starten sollte, oder?
Hier ist der Quellcode:
Code: Alles auswählen
#wecker.py
import threading
import time
import os
global zeit
from os import *
#Pfad der gewuenschten mp3-Datei speichern
if not path.exists('C:\\programme\\mp3wecker.txt'):
pfad=raw_input("Bitte den absoluten Pfad der gewuenschten mp3 Datei angeben")
datei=file('C:\\programme\\mp3wecker.txt',"w")
datei.write(pfad)
datei.close()
zeit=raw_input("Bitte Weckzeit angeben (z.B. 16:13)")
#Funktion zum Pruefen, ob die Weckzeit der aktuellen Uhrzeit entspricht
def checker():
if time.strftime("%H:%M")==str(zeit):
print "AUFWACHEN!"
datei=file('C:\\programme\\mp3wecker.txt',"r")
pfad=datei.read()
pfad=str(pfad)
datei.close()
os.spawnv(os.P_NOWAIT,'C:\\Programme\\Windows Media Player\\wmplayer.exe',['wmplayer.exe',pfad])
do.close_MyRegularThread()
#Klassen, zum Starten und Beenden des Threads
class MyRegularThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
global abbruch_event
abbruch_event = threading.Event()
def run(self):
sleep_time = 1
while not abbruch_event.isSet():
time.sleep(sleep_time)
checker()
def close(self):
abbruch_event.set()
class MyMainProgram:
def begin_MyRegularThread(self):
t = MyRegularThread()
t.start()
def close_MyRegularThread(self):
t = MyRegularThread()
t.close()
Ich hatte schon mal auf Python 2.4 upgedatet, aber dann hat irgendwie nichts mehr funktioniert, also bin ich wieder auf Python 2.2 umgestiegen...Gerold hat geschrieben:2. Du solltest dir eventuell mal überlegen, auf eine aktuellere Python-Version upzudaten.
@ N317V:
Ja, ich glaube, unter Windows nennt man Daemons Dienste oder Services, oder? Dann ist es das, was ich brauche?
Ich lade gerade die Python for Windows Extensions runter, aber bei 56 K Internet dauert das eine Weile...
Und ich habe festgestellt, dass zwar ein Prozess begonnen wird, wenn ich das Programm indirekt (also über Python und dann F5) ausführe. Aber wenn ich das Programm mit der Konsole öffne, dann wird kein Prozess im Task-Manager angezeigt... Weiß jemand, warum das so ist?
Danke schon mal im Voraus für eure Antworten...
Roman
Wie meinst Du das? PythonWin ist doch nur das Entwicklungswerkzeug. Dort kann man das Programm zwar auch laufen lassen, aber für den produktiven Einsatz ist das natürlich Käse. Dafür braucht man ja dann keinen Editor, Debugger etc.Roman hat geschrieben:Hallo,
Der ist allerdings eine Konsolenanwendung, so dass man ihn nicht mit pythonwin starten sollte, oder?
Yepp! Genau!Roman hat geschrieben: @ N317V:
Ja, ich glaube, unter Windows nennt man Daemons Dienste oder Services, oder? Dann ist es das, was ich brauche?
CMIIW: Im Taskmanager sollte so oder so nur der Python-Interpreter angezeigt werden, der das Script ja ausführt. Das Script ist kein eigener Task.Roman hat geschrieben: Und ich habe festgestellt, dass zwar ein Prozess begonnen wird, wenn ich das Programm indirekt (also über Python und dann F5) ausführe. Aber wenn ich das Programm mit der Konsole öffne, dann wird kein Prozess im Task-Manager angezeigt... Weiß jemand, warum das so ist?
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
Hallo,
Läuft es ann eigentlich über einen anderen Interpreter oder was verändert diese Endung? (Nur mal aus Interesse)
Ich dachte eigentlich immer, dass PythonWin nur für GUI Anwendungen da sei...
Aber bei mir funktioniert das irgendwie nicht! habe mal eine GUI Anwendung geschrieben, aber diese konnte ich nicht mit PYthonWin ausführen bzw. es erschien kein WIndow oder ähnliches.
Wenn ja, gibt es einen Weg, das zu verhindern?
Ich meine, wenn ich das script als .pyw abspeichere, dann erscheint ja gar nicht erst die Abfrage nach der Uhrzeit... Wenn ja, dann müsste ich dann noch eine Benutzeroberfläche schreiben, oder?N317V hat geschrieben:Wie meinst Du das? PythonWin ist doch nur das Entwicklungswerkzeug. Dort kann man das Programm zwar auch laufen lassen, aber für den produktiven Einsatz ist das natürlich Käse. Dafür braucht man ja dann keinen Editor, Debugger etc.
Läuft es ann eigentlich über einen anderen Interpreter oder was verändert diese Endung? (Nur mal aus Interesse)
Ich dachte eigentlich immer, dass PythonWin nur für GUI Anwendungen da sei...
Aber bei mir funktioniert das irgendwie nicht! habe mal eine GUI Anwendung geschrieben, aber diese konnte ich nicht mit PYthonWin ausführen bzw. es erschien kein WIndow oder ähnliches.
Es wird aber dann nichts Pythonmäßiges im Task-Manager angezeigt, noch nicht einmal der Interpreter. Also, wenn ich das DOS-Fenster schliesse, dann wird auch autpmatisch der Prozess abgebrochen, oder?N317V hat geschrieben:CMIIW: Im Taskmanager sollte so oder so nur der Python-Interpreter angezeigt werden, der das Script ja ausführt. Das Script ist kein eigener Task.
Wenn ja, gibt es einen Weg, das zu verhindern?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja, dann musst du selbst eine GUI schreiben. Aber das ist mit wxPython oder PyGTK auch nicht die Welt.Roman hat geschrieben:Ich meine, wenn ich das script als .pyw abspeichere, dann erscheint ja gar nicht erst die Abfrage nach der Uhrzeit... Wenn ja, dann müsste ich dann noch eine Benutzeroberfläche schreiben, oder?
Läuft es ann eigentlich über einen anderen Interpreter oder was verändert diese Endung? (Nur mal aus Interesse)
Es läuft, wenn du's so nennen willst, in einem anderen Interpreter wenn dus .pyw nennst. pyw-Dateien werden nämlich mit dem Interpreter pythonw.exe verknüpft, der das gleiche wie python.exe macht, nur eben keine Konsolenfenster aufmacht. Es spricht aber nichts dagegen .pyw-Dateien mit python.exe zu starten oder .py-Dateien mit pythonw.exe zu starten.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Das habe ich nicht ganz verstanden... Was meinst du mit wxPython oder PyGTK?Leonidas hat geschrieben:Aber das ist mit wxPython oder PyGTK auch nicht die Welt.
Aus irgendeinenem Grund funktioniert PythonWin nicht bei mir. Ich habe einige GUI Programme geschrieben, aber wenn ich sie mit PythonWin öffne, dann passiert gar nichts. Es wird kurz gerechnet, aber das wars dann auch schon.
Weißt du, woran das liegen könnte?
Danke für eure Antworten...
Roman
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
wxWidgets und PyGTK sind Module, mit denen du GUIs machen kannst. Die funktionieren meist sehr gut.Roman hat geschrieben:Das habe ich nicht ganz verstanden... Was meinst du mit wxPython oder PyGTK?Leonidas hat geschrieben:Aber das ist mit wxPython oder PyGTK auch nicht die Welt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Kann ich das nicht auch mit Tkinter machen, damit komme ich besser klar.Leonidas hat geschrieben:wxWidgets und PyGTK sind Module, mit denen du GUIs machen kannst. Die funktionieren meist sehr gut.
Dann bleibt immer noch mein Problem, dass wenn ich Programme öffne, die ich mit einer GUI geschrieben habe, diese dann nicht funktionieren...
Bzw. es wird nichts angezeigt. Wenn ich diese Programme dagegen indirekt über die Shell aufrufe, dann funktioniert alles einwandfrei.
Danke für eure Hilfe
Roman
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Klar, kannst du machen.Roman hat geschrieben:Kann ich das nicht auch mit Tkinter machen, damit komme ich besser klar.Leonidas hat geschrieben:wxWidgets und PyGTK sind Module, mit denen du GUIs machen kannst. Die funktionieren meist sehr gut.
Eher direkt über die Shell und indirekt über die Dateitypen-Verknüpfung Hast du .py-Dateien mit python.exe und .pyw-Dateien mit pythonw.exe verknüpft?Roman hat geschrieben:Dann bleibt immer noch mein Problem, dass wenn ich Programme öffne, die ich mit einer GUI geschrieben habe, diese dann nicht funktionieren...
Bzw. es wird nichts angezeigt. Wenn ich diese Programme dagegen indirekt über die Shell aufrufe, dann funktioniert alles einwandfrei.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ich habe gerade gemerkt, dass in meinen GUI-Programmen überall der usingIDLE Wert auf 1 gesetzt war... Kein Wunder, dass da nichts ging! Jetzt funktioniert es auch. Trotzdem danke für eure Hilfe, dass hat mir sehr geholfen.Leonidas hat geschrieben:Hast du .py-Dateien mit python.exe und .pyw-Dateien mit pythonw.exe verknüpft?
Eine letzte Frage hätte ich noch, in der Hoffnung euch nicht zu sehr auf die Nerven zu gehen: Eines meiner Programme enthält einen Fortschrittsbalken, den ich mit Tkinter geschrieben habe. Beim direkten (Ja, ich habe gelernt . Also der Aufruf über die Shell) Aufruf funktioniert das auch alles wunderbar. Aber beim indirekten Aufruf (über die Verknüpfung) wird der Balken erst am Ende des Programms gezeichnet...
Weiß da jemand einen Befehl, mit dem man dem Programm sagt, es solle jetzt sofort zeichnen?
Danke schon mal im Voraus...
Roman