In der Dosfensterleiste oben den Programnamen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Wenn ich ein Programm starte "python.exe trallala.py" möchte ich den Programnamen in der Dosleiste vom Dosfenster angezeigt haben.

Wie geht das mit Python?

Grus
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

Code: Alles auswählen

>>> from ctypes import windll, c_wchar_p
>>> windll.kernel32.SetConsoleTitleW(c_wchar_p(u'My Üläutß-Titel'))
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

jerch hat geschrieben:windll.kernel32.SetConsoleTitleW(c_wchar_p(u'My Üläutß-Titel'))
Sieht gut aus :wink:
Edit: Das da oben sieht zwar schöner aus, aber

Code: Alles auswählen

import os
os.system("title foo")
geht für windows auch

@funkheld
Ich wusste gar nicht das es sowas wie Dosfenster, Dosleiste gibt ?
Wenn du so eine Suchfunktion wie http://www.google.com nutzt, musst du dich nicht wundern warum du dort nichst findest :roll:
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Och, nicht schon wieder ``os.system`` :?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Würde auch die andere Lösung bevorzugen, aber da es hier nur um ein "Dosfenster" unter Windows ging, dachte ich das würde ihm reichen :D
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Naja, erstens sollte man schon seit langem ``subprocess`` bevorzugen und zweitens ist die Lösung von jerch wesentlich eleganter. Zudem ``ctypes`` ja auch teil der Stdlib ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Leonidas hat geschrieben:Lösung von jerch wesentlich eleganter. Zudem ``ctypes`` ja auch teil der Stdlib ist.
Habe ich auch nicht abgestritten,
gehen eigentlich alle befehle unter windows mit subprocess, kann es leider gerade nicht testen.
Wenn ja, wird os.system ein für alle mal aus meinem Wortschatz gestrichen.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Wenn du so eine Suchfunktion wie http://www.google.com nutzt, musst du dich nicht wundern warum du dort nichst findest
Na dann hast du die falsche Suchmaschine.

Meine listet dann alles auf, mit und ohne Bindestrich.
Es geht um das allgemeine Dos nicht nur um MsDos.

Jetzt wird der Titel in der Leiste angezeigt.
Jup, danke.

Gruss
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Ja DOS da lege ich dir gerne den Artikel ans Herz http://de.wikipedia.org/wiki/Disk_Operating_System

In der Definition steht eindeutig:
...deren Hauptaufgabe die Verwaltung von magnetischen Speichermedien wie Disketten und Festplatten ist...
Was meiner Meinung nach unter einem Windows os eindeutig Windows macht und nicht die Konsole, die man in Windows aufrufen kann. Diese kann man höchstens als DOS-Konsole betiteln aber nicht als "Dosfenster".
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Meint ihr nicht dass das jetzt Korinthenkackerei ist? Ja, es ist bekannt dass die Eingabeaufforderung kein DOS ist, was sogar den Übersetzern aufgefallen ist da der Vorsatz "MS-DOS" bei den NT-Varianten der Microsoft-Betriebssysteme weggefallen ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Na selbstverständlich :mrgreen:
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

@Xynon1:
'title name' ist ein Shellkommando. cmd.exe ruft dann seinerseits SetConsoleTitle() auf, diesen Zwischenschritt über die Shell kann man sich ersparen.

Dein Weg funktioniert auch mit subprocess, allerdings muss hierfür das Shellflag gesetzt sein.

Code: Alles auswählen

import subprocess
subprocess.call('title whatever', shell=True)
Für Umlaute musst Du den String entsprechend kodieren.

Für die Änderung der Titelzeile einen Subprozess zubemühen, ist natürlich fragwürdig. Zumal die Prozesserzeugung unter Windows relativ teuer ist.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Ehrlich gesagt bin ich eher weniger daran interessiert Windowskonsolen Titel umzubennen, aber Danke.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

Jetzt kennst Du wenigstens die Nachteile Deiner Lösung - man kann ja nie wissen ;)
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

So habe ich es auch aufgefasst :roll:

Nur ich nehm Python jetzt nicht gerade aus dem Grund um etwas nur für Windows und auch nur für diese eine Konsole zubauen.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

DOS-Konsole....
Du kennst dich da wohl nicht so aus, weil du wahrscheinlich nur mit Linux rumdaddelst
Wenn ich auf dem Desktop vom Windows etwas öffnet, ist das keine Kondole sondern immer ein Fenster oder weiteres Window, was da drin passiert ist vollkommen wurscht... :D

Nach dem Motto: Ich öffne mal die Exel-Konsole... :D ... öffne mal unter Linux die QT-Konsole... :D

Wenn ich es im Dos-Modus öffne, geht glaube ich ab Xp nicht mehr, da hat man den Begriff Konsole benutzt, ist wohl damals den schlauen Leuten nichts anderes eingefallen :D :D :D

Gruss
BlackJack

@funkheld: Wenn Du unter Windows die (DOS-)Konsole a.k.a. DOS-Eingabeaufforderung öffnest, dann ist das sehr wohl eine Konsole. Du sagst ja selbst, dass sogar in der Windows-Terminologie von einer Konsole gesprochen wird.

Der Unterschied zwischen einer (DOS-)Konsole unter Windows und einer Konsole (a.k.a. Terminal-Emulator) unter Linux ist auch nicht besonders gross. Beide dienen dazu innerhalb der grafischen Oberfläche, Programmen die Möglichkeit der Text-Ein- und Ausgabe zu bieten. Das kann eine Shell sein wie ``cmd.exe`` oder ``command.com`` (früher) unter Windows oder eine der vielen Shells die es unter Linux gibt. Es kann aber auch ein Programm sein, dass ohne den Umweg über eine Shell seine Ein-/Ausgaben über das Textwidget abwickelt. Das Prinzip ist das gleiche.
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Windows-Terminologie von einer Konsole gesprochen wird.
Eben , das ist der S.c.h.e.i.s.s

Neee....,neee....,nee....

Wenn dann wird schon beim Systemstart die F8-taste gedrückt, das der DosModus kommt und Window gar nicht mehr ans Ruder kommt, nämlich erst wieder duch einen Neustart..... :D

Gruss
Zuletzt geändert von funkheld am Sonntag 7. November 2010, 00:00, insgesamt 1-mal geändert.
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

...Ein-/Ausgaben über das Textwidget abwickelt. Das Prinzip ist das gleiche.
Nein..., ist es nicht. Weil die Dosbefehle garnicht alle funktionieren sondern nur die Windowsbefehle für das Widget. :D

Gruss
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

funkheld hat geschrieben:
...Ein-/Ausgaben über das Textwidget abwickelt. Das Prinzip ist das gleiche.
Nein..., ist es nicht. Weil die Dosbefehle garnicht alle funktionieren sondern nur die Windowsbefehle für das Widget. :D
Das Prinzip ist dennoch das gleiche! Also sag doch nicht "nein"... :roll:
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten