Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Test-Programm (https://www.delphipraxis.net/52858-test-programm.html)

TJDD 9. Sep 2005 16:47

Re: Test-Programm
 
der Code ist mein Projekt ich wollte nur dies ereichen ich werde mal genau den Genauen Pfad angeben und auf groß und klien schreibung achten

TJDD 10. Sep 2005 12:09

Re: Test-Programm
 
sry für den Doppelpost wollte das man das aktualisierte besser sieht


Also ich habe mir mal gedanken gemacht und ich denke das Problem ist gelöst

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  hProcess: THandle;
  wf: DWORD;
begin
  bClose := False;
  while bClose = False do
  begin
    hProcess := GetProcessHandleFromID(GetProcessID('C:\Programme\TightVNC\WinVNC.exe'));
    if hProcess = 0 then
      begin
        [b]Timer1.enabled := false;[/b]
        winexec(pchar('C:\Programme\TightVNC\WinVNC.exe'),sw_shownormal);
      end
    else
     [b] Timer1.enabled := true;[/b]
    Application.HandleMessage;
  end;
habe mal den Timmer deaktiviert wenn das programm an ist erst wenn es aus ist wird er wieder akriv :hello: :party:

TJDD 12. Sep 2005 11:02

Re: Test-Programm
 
So habe dann noch ne frgae wie bekomme ich das Programm in die Regetry so dass es automatisch bei Windowsstart geladen wird??

Matze 12. Sep 2005 11:06

Re: Test-Programm
 
Siehe: AutostartAutostart

TJDD 12. Sep 2005 20:08

Re: Test-Programm
 
Zitat:

original von Dieser Code stammt von Daniel B.:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CURRENT_USER;
    Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
    Reg.WriteString('NameDerAnwendung', ParamStr(0));
    Reg.CloseKey;
  finally
    Reg.Free;
  end;
end;

Muss nun unter namen der anwendung nur der name oder der komplette pfad

Z.B

Project1.exe

oder

c:\Projekt1.exe

Mr_G 12. Sep 2005 20:35

Re: Test-Programm
 
Soweit ich das sehe ist das nur eine Beschreibung da der Komplette Pfad ja mit ParamStr(0) als Wert eingetragen wird.
Project1.exe würde also reichen.

P.S.: Wie war das noch gleich mit: "Neue Frage - neuer Thread"?

TJDD 12. Sep 2005 22:23

Re: Test-Programm
 
gehört aber noch zu dem obigen Programm daher nix neues wollen aufmachen

Also nur Programmname

DANKE :thumb:

Olli 12. Sep 2005 22:37

Re: Test-Programm
 
Wäre es nicht am einfachsten, wenn dein "Watchdog" auch den überwachten Prozeß direkt startet? Somit wäre ein Handle vorhanden und der Watchdog könnte über eine der Wait*-Funktionen warten. Wenn du das in einer Schleife machst, wird der Prozeß immer wieder neu gestartet.

Abgesehen davon ist WinExec() "deprecated" und deine Timer1-Methode hoch ineffektiv. Aber jedem das seine :roll:

Desweiteren ist die Funktion GetProcessID() abgesehen von der Inkompatibilität zu Windows NT 4 nicht generisch funktionsfähig! Leider ist der Puffer nicht groß genug um beliebige EXE-Namen zu halten. Wenn also ein zu langer Name gesucht wird, so wird er nicht gefunden, weil der Puffer zB schon bei ".e" statt ".exe" aufhört.

TJDD 13. Sep 2005 10:32

Re: Test-Programm
 
Sehr schon das mir das jmd sagt Dsnke dir Olli :cheers:

Kann man das irgendwie verbessern so das es effektiver ist??

Und gibt es eine besser Fucntcion als GetProcessID() ??

Danke für diese gute Hilfe

Olli 13. Sep 2005 11:58

Re: Test-Programm
 
Zitat:

Zitat von TJDD
Kann man das irgendwie verbessern so das es effektiver ist??

Jupp, zB so wie ich das gesagt habe und dann das Ganze in einen Thread auslagern. Da können dir hier andere aber auch weiterhelfen. Ich bin nämlich ab heute Nachmittag bis Freitag nicht verfügbar.

Statt WinExec kannst du dann zB Hier im Forum suchenShellExecuteAndWait (Direktlink) benutzen und in eine Schleife innerhalb eines Threads packen. Dann der Waitfunktion ist das allein schon effektiver, weil eben nicht ein Timer ewig pollt, sondern du quasi benachrichtigt wirst.

Zitat:

Zitat von TJDD
Und gibt es eine besser Fucntcion als GetProcessID() ??

Nein. Mir wäre da nichts bekannt. Auf NT/2000 usw. steckt das Problem bereits in der Native API, auf der die Toolhelp-API aufsetzt. Da kann man wohl bloß pragmatisch herangehen :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:49 Uhr.
Seite 2 von 2     12   

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