Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Programm per klick neustarten! (https://www.delphipraxis.net/85829-programm-per-klick-neustarten.html)

Tobias2610 5. Feb 2007 15:45


Programm per klick neustarten!
 
Tach,
wie lautet der Befehl um ein Prog neu zu starten?

GRUß TTT

Bernhard Geyer 5. Feb 2007 15:47

Re: Programm per klick neustarten!
 
Delphi-Quellcode:
ShellExecute('MeineExe');
Close;

SirThornberry 5. Feb 2007 15:48

Re: Programm per klick neustarten!
 
es gibt keinen direkten Befehl. Du kannst einfach das aktuelle laufende Programm nochmal starten (genau wie jedes andere Programm auch) und dann das aktuelle beenden.
Worin liegt der Sinn? Eventuell gibt es ja eine sinvollere Methode für dein Vorhaben als das gesamte Programm neu zu starten.

Tobias2610 5. Feb 2007 15:50

Re: Programm per klick neustarten!
 
Ich habe ein programm mit diagrammen und textfeldern, die ich gerne zurück setzen würde. ein befehl der alles zurücksetzt ohne neustart ist sau kompliziert!

Tobias2610 5. Feb 2007 15:57

Re: Programm per klick neustarten!
 
Mein delphi kann mit den befehl
Delphi-Quellcode:
ShellExecute
nix anfangen!

Nils_13 5. Feb 2007 16:02

Re: Programm per klick neustarten!
 
Du musst noch ShellAPI in die Uses-Klausel aufnehmen.

Tobias2610 5. Feb 2007 16:04

Re: Programm per klick neustarten!
 
wie macht man sowas?!? Sorry hab leider nur informatik @ school!
P.S. so genau wie's geht!

dominikkv 5. Feb 2007 16:07

Re: Programm per klick neustarten!
 
so:
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ShellAPI;

Tobias2610 5. Feb 2007 16:12

Re: Programm per klick neustarten!
 
THX, aber kaum eingefügt schon kommt: Inkompatible Typen HWND und String!

Kein Plan mehr!!!

himitsu 5. Feb 2007 16:28

Re: Programm per klick neustarten!
 
Weil ShellExecute nicht nur den Dateinamen verlangt? :stupid:

schau doch mal nach was für Parameter wirklich angegeben werden müssen. :zwinker:

MSDN-Library durchsuchenShellExecute


PS: du kannst ja auch mal im Forum nachgucken ... Hier im Forum suchenShellExecute wird ja oft genug vrwendet.

Tobias2610 5. Feb 2007 16:35

Re: Programm per klick neustarten!
 
diese seite hilft mir leider keinen meter weiter!

sirius 5. Feb 2007 16:42

Re: Programm per klick neustarten!
 
Zitat:

Zitat von Tobias2610
diese seite hilft mir leider keinen meter weiter!

Was genau hilft dir denn daran nicht weiter :gruebel: ?

Tobias2610 5. Feb 2007 17:03

Re: Programm per klick neustarten!
 
ich weiß einfach nicht, was ich noch an dem shell sowieso ändern soll und außerdem weiß ich nit nach was ich suchen soll!!!!! :?:

ichbins 5. Feb 2007 17:13

Re: Programm per klick neustarten!
 
Ahlso du musst bei shellexecute meherere Parameter angeben. Shellexecute ist ein Befehl der dierekt von der WindowsAPI ist, also ist er ziemlich kompliziert und umständlich und hat Funktionen die du garnicht brauchst.

Der erste Parameter erlaubt dir das Fensterhandle des Programmes anzugeben, von dem es gestartet wurde (oder so glaube ich *g*). Der ist für dich unwichtig, gib einfach Null an.

Im zweiten Parameter kannst du den Typ der Operation die du machen willst als String angeben, du willst ein Programm öffnen, allso nimmst du 'open'.

Als drittes musst du den Dateinamen der Datei angeben, und zwar als pansichar. Das ist sowas ähnliches wie ein String, und Delphi kann es umwandeln: pansichar(application.exename).

In Parameters kannst du alle Parameter angeben, mit der du dein Programm startest. Die sind noch hauptsächlich aus DOS-Zeiten geblieben, werden aber manchmal heute immer noch benutzt (von mir z.B.). Das kannst du auch leer lassen, also einfach '' reinschreiben.

In Directory kannst du das Verzeichniss in dem das Programm ausgeführt wird angeben, fallst du es nicht ändern willst, lässt du hier auch frei: ''

In ShowCmd kannst du festlegen ob das Programm Maximiert oder Minimiert gestartet wird. Um in Standardeinstellungen zu starten schreib einfach 0.


Also:
Delphi-Quellcode:
shellexecute(0,'open',pansichar(application.exename),'','',0); //Programm neustarten
application.terminate; //Programm schließen.
//Du kannst auch zum besonders brutalen Beenden den Befehl halt(0) verwenden.
//Oder close, dann wird die onclose-Prozedur der Form noch ausgeführt.

Ich halte deine Arbeitsweise aber trotzdem für unsauber. Es wäre schonender für den Rechner wenn du alle Einstellungen so zurücksetzt (ok, für dich vllt nicht so schonend...)

DP-Maintenance 5. Feb 2007 20:41

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.

SirThornberry 5. Feb 2007 20:50

Re: Programm per klick neustarten!
 
Zitat:

Zitat von Tobias2610
Ich habe ein programm mit diagrammen und textfeldern, die ich gerne zurück setzen würde. ein befehl der alles zurücksetzt ohne neustart ist sau kompliziert!

Delphi steht für Objectpascal! Dein Form1 ist also eine Instanz von TForm1. Wenn du wieder den Ausgangszustand willst brauchst du also nur eine neue Instanz erstellen und die alte verwerfen und musst nicht gleich den ganzen Prozess neu starten.

Tobias2610 6. Feb 2007 13:35

Re: Programm per klick neustarten!
 
Much THX "Ich" bins jetzt klappts!!!!!!!!!!!!!!!!!!!!!!!!!!!!

:thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz