AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Sich selbst neu starten?

Ein Thema von PeterPanino · begonnen am 18. Apr 2006 · letzter Beitrag vom 29. Jul 2010
Antwort Antwort
Seite 3 von 3     123   
paritycheck

Registriert seit: 8. Feb 2005
51 Beiträge
 
Delphi 2009 Professional
 
#21

Re: Sich selbst neu starten?

  Alt 27. Jul 2006, 11:07
Hab es nicht weiter getestet aber vielleicht funktioniert folgendes:

Delphi-Quellcode:
program Project1;

uses
  Forms,
  Windows, Sysutils, Messages,
  Unit1 in 'Unit1.pas{Form1};

{$R *.res}

var hMutex: Cardinal;
    aHWND: THandle;

begin
  hMutex:= CreateMutex(nil, True, PChar(ExtractFilename(ParamStr(0))));
  if GetLastError() = ERROR_ALREADY_EXISTS then begin
     aHWND:= FindWindow(nil, PChar('Form1'));
     if ParamStr(1) = '-rthen begin //vielleicht doch erst überprüfen ob das Programm neu getartet werden darf.
                                      //könnte sonst unerwünschte Nebenwirkungen geben....
        if aHWND <> 0 then begin
           SendMessage(aHWND, WM_CLOSE, 0, 0);
           Sleep(1000);
        end;
     end else begin
        MessageBox(0, PChar('Programm läuft bereits.'), PChar(ExtractFilename(ParamStr(0))), mb_OK);
        Halt;
     end;
  end;
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
  if hMutex <> 0 then begin
     ReleaseMutex(hMutex);
     CloseHandle(hMutex);
  end;
end.
Dann einfach via CreateProcess oder auch ShellExecute das Programm neu starten.
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE
MuTzE

Registriert seit: 24. Sep 2003
59 Beiträge
 
#22

Re: Sich selbst neu starten?

  Alt 24. Sep 2006, 23:23
Eine weitere Möglichkeit wäre diese:

Delphi-Quellcode:
procedure RestartApplication;

 function GetTmpDir: String;
 var
  PC: PChar;
 begin
  PC := StrAlloc(MAX_PATH + 1);
  GetTempPath(MAX_PATH, PC);
  Result := String(PC);
  StrDispose(PC);
 end;

 function GetTmpFileName(Ext: String): String;
 var
  PC: PChar;
 begin
  PC := StrAlloc(MAX_PATH + 1);
  GetTempFileName(PChar(GetTmpDir), 'uis', 0, PC);
  Result := string(PC);
  Result := ChangeFileExt(Result, Ext);
  StrDispose(PC);
 end;

var
 BatchFile: TStringList;
 BatchName: String;
begin
 batchname := GetTmpFileName('.bat');
 FileSetAttr(ParamStr(0), 0);
 BatchFile := TStringList.Create;
 with BatchFile do
  begin
   try
    Add(':Label1');
    Add(Copy(ParamStr(0), 0, 2));
    Add('cd ' + Copy(ExtractFilePath(ParamStr(0)), 4, Length(ExtractFilePath(ParamStr(0))) -1));
    Add('start ' + ExtractFileName(ParamStr(0)));
    Add('del ' + BatchName);
    SaveToFile(BatchName);
    ChDir(GetTmpDir);
    WinExec(PChar(BatchName), SW_HIDE);
   finally
    BatchFile.Free;
   end;
   Halt;
  end;
 Application.Terminate;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#23

Re: Sich selbst neu starten?

  Alt 25. Sep 2006, 00:15
Wie marabu schon andeutete mit dem Link, n Mutex und Ruhe ist im Laden
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Benutzerbild von Pichel
Pichel

Registriert seit: 25. Feb 2005
Ort: Kassel
65 Beiträge
 
Delphi 7 Professional
 
#24

AW: Re: Sich selbst neu starten?

  Alt 29. Jul 2010, 15:03
Eine weitere Möglichkeit wäre diese:
Mittlerweile meldet unter anderem Antivir sobald dieser Code verwendet wird einen "TR/Dldr.Delphi.Gen" Virus und man kann ihn nicht mehr wirklich verwenden.
Grüße aus Kassel.

Konfuzius sprach: Etwas lernen und sich immer wieder darin üben - schafft das nicht auch Befriedigung?
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#25

AW: Re: Sich selbst neu starten?

  Alt 29. Jul 2010, 15:14
Eine weitere Möglichkeit wäre diese:
Mittlerweile meldet unter anderem Antivir sobald dieser Code verwendet wird einen "TR/Dldr.Delphi.Gen" Virus und man kann ihn nicht mehr wirklich verwenden.

Das ist nicht der Code sonder ein Virus den es in Delphi gibt such mal hier im Forum das steht das.
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:58 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