Python Skript weiterlaufen lassen, wenn cmd/Skript "geschlossen" wird?

julihan41  17.04.2023, 14:16

Welches Betriebssystem?

Jonimaker 
Fragesteller
 17.04.2023, 14:22

win10

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich bin kein Pothonprogrammierer!

Egal in welcher systemnahen Programmiersprache kann man auf native Systemfunktionen zugreifen.

Für die Art der Darstellung eines Fensters ist die Funktion "ShowWindow" in "user32.dll" zuständig.

hier eine kleine demonstration in Powershell:

  #definiere Zugriff auf native Systemroutine zum Beeinflussen der Darstellungsart eines Fensters
$user32=Add-Type -m '[DllImport("user32.dll")] public static extern void ShowWindow(IntPtr hWnd, int nCmdShow);' -Name myAPI -passthru
 #ermittle das Fensterhandle des Fensters dieses Scripts
$hwnd=(gps -id $PID).MainWindowHandle


Write-Host "Ich schalte  dieses Fenster in 3 Sekunden aus und nach 3 weiteren Sekunden  wieder an"
sleep 3
 #schalte die Sichtbarkeit dieses Fenstes  aus
$user32::ShowWindow($hwnd, 0)
sleep 3
$user32::ShowWindow($hwnd, 9)
pause

In Python scheint das alles wesentlich umständlicher zu sein.

ein paar links in die Richtung:

Keine Ahnung ob ich nur nicht Gründlich genug gesucht habe.

Wenn es in Python wirklich so umständlich sein sollte das Hwnd auf das eigene Fenster zu ermitteln (wie ich momentan den Eindruck habe) kann bin ich glücklich mich nie näher mit dieser unsäglichen Sprache befasst zu haben.😁

Wenn ich Dir einen guten Rat geben darf. Lerne eine ordentliche Programmiersprache wie C#, C++

Python mag zwar in einfachen Sachen simple sein, aber wenns ans "Eingemachte" geht, wird es hässlich🤢

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
Jonimaker 
Fragesteller
 25.05.2023, 20:08

Danke nochmal, ich habe mich nicht mehr daran getraut vielleicht versuche ich es noch ein anderes Mal irgendwann! Vielen Dank für die vielen nützlichen Anregungen. Ich lerne jetzt auch C# haha

1

Ein Konsolenentkoppler wie screen oder tmux würde dir erlauben, den sichtbaren Teil der Konsole - das Fenster - zu schließen, während das Programm weiter läuft, und später kannst du wieder damit verbinden, um wieder angezeigt zu bekommen.

Erzesel  23.04.2023, 09:24

genauso wie man ein Fenster Maximieren/Minimieren kann, lässt es sich auch verstecken, das klappt durch die Bank mit jedem Fenster.

Wenn man ein fremdes Fenster versteckt, muss man nur darauf achten, das man sich das Handle "merkt" denn das wird, aus verständlichen Gründen, für abrufende Funktionen als 0 zurückgegeben. (sonst könnte man ja jede Hintergrundapp ans licht zerren)

0

Hallo.

Das dürfte als Konsolen-Applikation nicht möglich sein. Es wird ja aus der Konsole heraus gestartet. Wenn du diese schließt, schließt du das Programm.

Ansonsten könntest du ein Fenster kreieren, welches die Konsole aufruft um dort die Ausgabe zu handhaben. Das Fenster kannst du aber frei modifizieren, also auch unsichtbar machen.

Woher ich das weiß:Studium / Ausbildung – Diplom Wirtschaftsinformatiker
Jonimaker 
Fragesteller
 17.04.2023, 14:28

Vielleicht eine doofe Frage, aber was gibt es denn für Alternativen, wenn nicht als Konsolen-Applikation?

0
GuteAntwort2021  17.04.2023, 14:36
@Jonimaker

Naja, wie bereits geschrieben, erstellst du ein eigenes Fenster. Dann läuft das Programm so lange, bis du das Fenster schließt.

Und das Fenster kannst du eben bearbeiten, wie du möchtest. Unter anderem auch z. B. unsichtbar machen. Dann könntest du ihm noch Hotkeys zuweisen, wodurch es wieder sichtbar wird für Einstellungen.

Wobei ich nicht so richtig verstehe, was das Problem an einer minimierten Anwendung wie der Konsole ist.

0