Compiliertes Programm (exe) startet wieder neu

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
PIC18F2550
Beiträge: 104
Registriert: 29.04.2024 09:10
Computerausstattung: Server HP Proliant G7
PC AMD FX(tm)-9590, 64Gb Ram, 2x 2TB Raid5 SAS

Compiliertes Programm (exe) startet wieder neu

Beitrag 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
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Compiliertes Programm (exe) startet wieder neu

Beitrag 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.
Benutzeravatar
PIC18F2550
Beiträge: 104
Registriert: 29.04.2024 09:10
Computerausstattung: Server HP Proliant G7
PC AMD FX(tm)-9590, 64Gb Ram, 2x 2TB Raid5 SAS

Re: Compiliertes Programm (exe) startet wieder neu

Beitrag von PIC18F2550 »

Es erscheint im taskmannager 2x
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Compiliertes Programm (exe) startet wieder neu

Beitrag von NicTheQuick »

Das ist alles etwas unspezifisch. Und da ich kein Windows besitze, kann ich das jetzt auch nicht nachvollziehen.
Benutzeravatar
PIC18F2550
Beiträge: 104
Registriert: 29.04.2024 09:10
Computerausstattung: Server HP Proliant G7
PC AMD FX(tm)-9590, 64Gb Ram, 2x 2TB Raid5 SAS

Re: Compiliertes Programm (exe) startet wieder neu

Beitrag von PIC18F2550 »

Code: Alles auswählen

OpenConsole()
  ConsoleTitle ("PureBasic (x32) - USB Example")
  PrintN("Zum Beenden Any-Key Drücken, :)")
  Input()
CloseConsole()
End
:angry:
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
PIC18F2550
Beiträge: 104
Registriert: 29.04.2024 09:10
Computerausstattung: Server HP Proliant G7
PC AMD FX(tm)-9590, 64Gb Ram, 2x 2TB Raid5 SAS

Re: Compiliertes Programm (exe) startet wieder neu

Beitrag 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:
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Compiliertes Programm (exe) startet wieder neu

Beitrag 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
Benutzeravatar
PIC18F2550
Beiträge: 104
Registriert: 29.04.2024 09:10
Computerausstattung: Server HP Proliant G7
PC AMD FX(tm)-9590, 64Gb Ram, 2x 2TB Raid5 SAS

Re: Compiliertes Programm (exe) startet wieder neu

Beitrag 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.
Zuletzt geändert von PIC18F2550 am 08.05.2024 22:39, insgesamt 1-mal geändert.
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
H.Brill
Beiträge: 496
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Compiliertes Programm (exe) startet wieder neu

Beitrag 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.
PB 6.10
jogo
Beiträge: 123
Registriert: 22.11.2020 20:05
Computerausstattung: 'ne Handvoll gebrauchte Laptops & PCs mit Mint und LMDE

Re: Compiliertes Programm (exe) startet wieder neu

Beitrag 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 :)
--
Ideen gibt es viele - man muss sie nur haben...
Mint / LMDE5+6 // PureBasic 6.21
Antworten