Selbes Programm neu starten

Anfängerfragen zum Programmieren mit PureBasic.
HoDam
Beiträge: 82
Registriert: 19.11.2004 13:57
Wohnort: Köln, Cologne

Selbes Programm neu starten

Beitrag von HoDam »

Ich habe innnerhalb des Hauptfensters einen Menupunkt um die Konfiguration zu ändern. Nach dem die Änderungen erfolgt ist und diese zurückgeschrieben wurden in die Ini-Datei müsste das Programm entweder sich selber neu starten, damit die Änderungen aktiv werden, oder ich muss mit eine goto-Schleife arbeiten, damit die Intialisierung neu erfolgt. Für mich sauberer wäre eine Neustart, weil ich dann sicher weiss, das im Speicher nichts mehr hängt.
Der Neustart soll nach Bestätigung einer Meldung über einen Neustart erfolgen.


Wie lässt sich sowas realisieren?.


Danke
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag von Hroudtwolf »

RunProgram "DeinProgram.exe"
CloseWindow (#deinfenster)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Der Ansatz von Hroudtwolf ist schon ganz gut, hier nochmal ein hoffentlich funktionierender Code:

Code: Alles auswählen

MyApp.s = Space(1000)
GetModuleFileName_(GetModuleHandle_(0), @MyAPP, 1000)
RunProgram(MyApp)
End
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
HoDam
Beiträge: 82
Registriert: 19.11.2004 13:57
Wohnort: Köln, Cologne

Beitrag von HoDam »

Dankeschön

es funktioniert
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Eigenen Programmnamen ermitteln

Beitrag von AND51 »

Hallo!

Dies ist mein erster Beitrg in der PureBasic Welt und der fängt mit ner Frage an:

Kannst du
MyApp.s = Space(1000)
GetModuleFileName_(GetModuleHandle_(0), @MyAPP, 1000)
RunProgram(MyApp)
End
mal bitte genauer erklären? Steht nicht in der PB-Hilfe. Bitte erklär mir jeden Parameter einzeln.
Natürlich nur den von "GetModuleFileName_", den Rest des Programms kenne ich. Ich habe natürlich schon gegoogelt aber wirklich nichts gefunden.
Bitte sag mir außerdem: Auf welchen Plattformen/Betriebssystemen funktioniert dieser obige Code?

Danke für deine Mühe, AND51
Zuletzt geändert von AND51 am 01.10.2005 13:59, insgesamt 1-mal geändert.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Willkommen!
Sofern du über englische Sprachkentnisse verfügst, kannst du Informationen
über System spezifische Funktionen in der MSDN nach schlagen. Hier ein Link:
http://msdn.microsoft.com/library/defau ... lename.asp

Der Code funktioniert nur unter Windows, da das eine Windows API ist und
diese gibt es nur unter Windows.
Bild
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Re: Eigenen Programmnamen ermitteln

Beitrag von Laurin »

AND51 hat geschrieben:
MyApp.s = Space(1000) ; Eine Textvariable wird definiert und mit 1000 Leerzeichen gefüllt.
GetModuleFileName_(GetModuleHandle_(0), @MyAPP, 1000) ; Hier wird die Textvariable mit den Pfad deines Programms gefüllt.
RunProgram(MyApp) ; Dein Programm wird ein 2. Mal gestartet.
End ; Dein 1. Programm wird beendet.
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Programmnamen ermitteln

Beitrag von AND51 »

Wow, ich muss schon sagen, dass ging ja wirklich schnell mit der Antwort, damit habe ich nicht gerechnet.

Danke ihr zwei! Ihr seid spitze! :allright:

Und wenn ich den Pfad, indem die exe-datei liegt herausfinden möchte brauche ich nur denselben Code aber mit "GetModuleFileName_" benutzen?

Danke, AND51
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Code: Alles auswählen

MyApp.s = Space(1000) ; Eine Textvariable wird definiert und mit 1000 Leerzeichen gefüllt.
GetModuleFileName_(GetModuleHandle_(0), @MyAPP, 1000) ; Hier wird die Textvariable mit den Pfad deines Programms gefüllt.
Debug MyApp ; Pfad zu deiner Datei im Debugger ausgeben (dazu muss der Debugger aber laufen!)
End ; Dein Programm wird beendet. 
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Ich will ja nicht groß rumnörgeln, ich wollte nur anmerken, dass bei mir dann der Pfad inkl. Programmnamen ausgegeben wird, was nicht schlimm ist. im Gegenteil: Mit

Code: Alles auswählen

GetPathPart(MyApp)
kann man den Pfad daraus ermitteln (hat am Ende einen \ Backslash \) und mit

Code: Alles auswählen

GetFilePart(MyApp)
kann man den Programmnamen ermitteln. Diese Methode finde ich gut.
Ich hoffe ich werde auch mal so ein guter PureBasic-Programmierer wie ihr! HTML, JavaScript, CSS, CGI/Perl, Qbasic, Logo und Pascal habe ich ja schon hinter mir!

Ich danke euch auch recht herzlich!
Gruß, AND51
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten