Seite 1 von 3

Compiliertes Programm (exe) startet wieder neu

Verfasst: 08.05.2024 10:31
von PIC18F2550
Hallo,
in der IDE ist alles OK.
Nur wenn ich das compilierte Programm unter W10 beenden will wird es ein weiteres mal gestartet.
Am Ende habe ich zwei oder noch mehr Fenster offen. :shock:

Danke

Re: Compiliertes Programm (exe) startet wieder neu

Verfasst: 08.05.2024 10:49
von NicTheQuick
Startet wirklich ein zweiter Prozess oder ist dein Code falsch, beendet sich nicht korrekt und öffnet stattdessen ein neues Fenster?
Mehr als raten kann man ohne Code leider nicht.

Und falls ein neuer Prozess startet, würde ich mal aus dem Bauch heraus raten deinen Virenscanner zu deinstallieren. Die machen doch gerne solchen Mist.

Re: Compiliertes Programm (exe) startet wieder neu

Verfasst: 08.05.2024 10:55
von PIC18F2550
Es erscheint im taskmannager 2x

Re: Compiliertes Programm (exe) startet wieder neu

Verfasst: 08.05.2024 11:47
von NicTheQuick
Das ist alles etwas unspezifisch. Und da ich kein Windows besitze, kann ich das jetzt auch nicht nachvollziehen.

Re: Compiliertes Programm (exe) startet wieder neu

Verfasst: 08.05.2024 12:16
von PIC18F2550

Code: Alles auswählen

OpenConsole()
  ConsoleTitle ("PureBasic (x32) - USB Example")
  PrintN("Zum Beenden Any-Key Drücken, :)")
  Input()
CloseConsole()
End
:angry:

Re: Compiliertes Programm (exe) startet wieder neu

Verfasst: 08.05.2024 12:52
von PIC18F2550
Hab es gefunden ist etwas Doof aber nach dem Starten bekommt das Programm nicht den Fokus.
Und wenn das programm nur auf eine End bestätigung wartet kommt bei enter ein weiterer programmstart. :oops:

Ich kann mir zwei möglichkeiten vorstellen wie man das lösen könnte.

1. Das Programm bekommt nach den Start den focus

2. Es wird ein doppelstart verhindert

... und alles ist gut.

Nur habe ich keine Idee wie ich das umsetzen sollt. :cry:

Re: Compiliertes Programm (exe) startet wieder neu

Verfasst: 08.05.2024 13:05
von NicTheQuick
Das hier sollte dir helfen: https://www.rsbasic.de/aktualisierung/w ... 3%A4uft.pb

Das hab ich aus RSBasics WinAPI Library: https://www.rsbasic.de/winapi-library

Re: Compiliertes Programm (exe) startet wieder neu

Verfasst: 08.05.2024 14:16
von PIC18F2550
Die Links hab ich mir gespeichert. Danke

Dabei binn ich auf das gestoßen.

Code: Alles auswählen

SetWindowPos_(FindWindow_("TEST",#Null),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE)
:mrgreen:

Das Problem ist hiermit beseitigt.

Re: Compiliertes Programm (exe) startet wieder neu

Verfasst: 08.05.2024 19:32
von H.Brill
2. Es wird ein doppelstart verhindert
Konflikt mit doppeltem Öffnen der RS232 verhindern ? Bzw. andere Programme könnten ja die Kommunikation
stören. Oder was ist der Sinn dahinter ?
Oder generell ?
Da es ja ein Konsolenprogramm ist, wird es schwieriger, die PID (Program-ID) zu ermitteln.
Oder geht das genauso, wie bei einem Fenster ?

Da gäbe es noch die Möglichkeit, das Schnittstellenhandle in einer named pipe (FileMap) beim
Erststart zu speichern und bei Programmende wieder zu löschen. Also Programm startet und
sieht in der Filemap nach. Ist kein Handle drin, schreibt es Handle der Schnittstelle in diese Filemap.
Wird das Programm nun in zweiter Instanz gestartet, fragt es die Filemap wieder ab. Steht schon ein
Handle drin, ist der Port schon offen. Natürlich muß das Programm bei Programmende die Filemap
wieder zurück setzen.
Das ganze könnte man auch mit der PID machen.
So könnte ich mir das vorstellen.
Vielleicht ist auch der Weg, die Schnittstelle exklusiv zu öffnen einfacher.
Lektüre :
https://en.wikibooks.org/wiki/Serial_Pr ... ng/termios
Ist zwar englisch, steht aber einiges drin.

Re: Compiliertes Programm (exe) startet wieder neu

Verfasst: 08.05.2024 20:55
von jogo
ab PB 6.10 kannst du mit Mutex = CreateMutex() einen Mutex erstellen. Wenn sich dann beim Doppelstart kein Mutex mit den gleichen Namen erzeugen läßt, weißt du, dass dein Programm bereits geöffnet ist und beendest den Doppelstart sofort.
Probiert habe ich diese Funktion mit PB noch nicht, aber so kenn ich das allgemein von Mutex :)