Shell nach Beendigung freigabe Bottun

Alle Fragen zur Programmierung, die nicht in die speziellen Themen passen
Antworten
loow
Foriker
Beiträge: 12
Registriert: Di 21. Mai 2024, 15:12
Kontaktdaten:

Shell nach Beendigung freigabe Bottun

Beitrag von loow » Di 21. Mai 2024, 15:29

Hallo zusammen,

ich bin recht neu hier aber Gambas ist nicht ganz neu für mich. Schreibe ein Programm mit einer Installation Anweisung die im
Hintergrund per Shell aufrufen wird. Starte ich die Installation per Bottum, wird dieser gesperrt und es laufen mehrere Shell Anweisung durch.
Nach Abschluss, soll der Button wieder freigegeben werden, eigentlich geht das auch ABER, der Button wird zu früh freigegeben und die Shell laufen teilweise gleichzeitig.
Hier mal ein abgespeckter Auszug: gambas code
Install.Enabled = False
  If Not Exist(User.Home &/ ".test") Then 
    Wait 0.5
    Shell App_DIR &/ "bin/cli config" Wait For Read Write As "Install_list_Contents"
    Wait 0.5
    Shell App_DIR &/ "bin/cli core install" Wait For Read Write As "Install_list_Contents"
    Wait 0.5
    Shell App_DIR &/ "bin/cli core update" Wait For Read Write As "Install_list_Contents"
  Endif 
  Wait 1
  Shell App_DIR &/ "bin/cli listall" Wait For Read As "Install_list_Contents"
  Install.Enabled = True
Wenn ich hier "Wait For..." einsetzte, geht es, aber da ich die Ausgabe haben möchte und ich Wait entferne, wird er Button zu früh freigegeben und die Shell verschluckt sich teilweise.
Wie kann ich die Shell einzeln ausführen und er Button erst nach Abschluss wieder Freigeben.

Gruß an alle

Benutzeravatar
Honsek
Foriker
Beiträge: 515
Registriert: Do 4. Okt 2007, 18:01
Kontaktdaten:

Re: Shell nach Beendigung freigabe Bottun

Beitrag von Honsek » Di 21. Mai 2024, 15:57

Hallo,

ein Blick auf https://gambas-buch.de/doku.php?id=k21: ... &s[]=shell
könnte Dir helfen, einen geeigneten Ansatz zu finden.

Mit freundlichem Gruß

Honsek
Honsek (https://www.gambas-buch.de)
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!

loow
Foriker
Beiträge: 12
Registriert: Di 21. Mai 2024, 15:12
Kontaktdaten:

Re: Shell nach Beendigung freigabe Bottun

Beitrag von loow » Di 21. Mai 2024, 16:09

Hallo,

hab ich schon und einige andere Seiten auch, aber finde da keine Lösung.
Gambas ist leider nicht weit verbreitet, obwohl ich die GUI sehr gut finde,
habe keine andere Sprache gesehen, die alles in einem hat...

Aber gut, das löst leider nicht mein Problem...

Gruß

Benutzeravatar
Honsek
Foriker
Beiträge: 515
Registriert: Do 4. Okt 2007, 18:01
Kontaktdaten:

Re: Shell nach Beendigung freigabe Bottun

Beitrag von Honsek » Di 21. Mai 2024, 20:10

Hallo,

es wäre hilfreich, wenn genau beschrieben wird, was in den offensichtlich 4 Schritten realisiert werden soll.
Bisher kann ich im verkürzten Quelltext nichts erkennen.

Mit freundlichem Gruß

Honsek
Honsek (https://www.gambas-buch.de)
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!

Bonus
Foriker
Beiträge: 132
Registriert: Mo 18. Mär 2024, 14:38
Kontaktdaten:

Re: Shell nach Beendigung freigabe Bottun

Beitrag von Bonus » Di 21. Mai 2024, 20:27

Die Verwendung von „Wait“ funktioniert nicht so, wenn „For Read“ verwendet wird.

Sie müssen die Process.class verwenden, um auf das Ende des Prozesses zu warten.
gambas code

Dim hProc As Process

hProc = Shell "command" For Read Write As "Install_list_Contents"

While hProc.State = Process.Running  ' Wait
  Wait 0.1
Wend

If hProc.Value Then Message.Error("Error " & hProc.Value)

Ich bin Engländer und verwende Google Übersetzer. (Das tut mir leid)

Bonus
Foriker
Beiträge: 132
Registriert: Mo 18. Mär 2024, 14:38
Kontaktdaten:

Re: Shell nach Beendigung freigabe Bottun

Beitrag von Bonus » Di 21. Mai 2024, 20:39

OR..
gambas code

  Dim sResult As String
  Dim hProc As Process

  Install.Enabled = False
  If Not Exist(User.Home &/ ".test") Then Shell "cd '" & App_DIR &/ "bin/'; cli config; cli core install; cli core update" Wait To sResult
 
  hProc = Shell App_DIR &/ "bin/cli listall" For Read Write As "Install_list_Contents"
 
  While hProc.State = Process.Running  ' Wait
    Wait 0.1
  Wend

  Install.Enabled = True

Ich bin Engländer und verwende Google Übersetzer. (Das tut mir leid)

Antworten

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot] und 0 Gäste