Delphi-PRAXiS
Seite 1 von 2  1 2      

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 5. Sep 2005 16:29


Test-Programm
 
Hi waollte mal fragen ob es ein Programm gibt das uz.b alle 5 min testen ob ein anderes programm am laufen ist und falls nicht das Programm starten kann

bsp

es lauft "sol.exe"(dumm ich weis)

das Programm soll dann alle 5 min testen o sol.exe lauft wenn nein soll sol.exe gestarten werde

kann mir das jmd sagen oder vlt sogar geben danke

Chegga 5. Sep 2005 16:34

Re: Test-Programm
 
Hi,

suchst oder willst solch ein Programm machen? :gruebel:

MfG Marc

Mr_G 5. Sep 2005 16:38

Re: Test-Programm
 
Falls du es selber programmieren willst guckst du hier oder suchst mal hiernach: Hier im Forum suchenShellExecute

Sergej 5. Sep 2005 16:38

Re: Test-Programm
 
Also... :roll:


Programm starten

Prüfen ob ein Programm läuft


Und für den Rest reicht ein Timer...


Greetz Sergej

TJDD 8. Sep 2005 20:07

Re: Test-Programm
 
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, tlhelp32, ShellAPI, ExtCtrls, AppEvnts;

const IC_CLICK = WM_APP + 201;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Timer1: TTimer;
    ApplicationEvents1: TApplicationEvents;
    procedure ApplicationEvents1Minimize(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure Systray(var sMsg: TMessage); message IC_CLICK;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  NIM : TNotifyIconData;

implementation

{$R *.dfm}

var bclose : boolean;

function GetProcessID(Exename: string): DWORD;
var
  hProcSnap: THandle;
  pe32: TProcessEntry32;
begin
  result := 0;
  hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
  if hProcSnap <> INVALID_HANDLE_VALUE then
  begin
    pe32.dwSize := SizeOf(ProcessEntry32);
    if Process32First(hProcSnap, pe32) = true then
    begin
      while Process32Next(hProcSnap, pe32) = true do
      begin
        if pos(Exename, pe32.szExeFile) <> 0 then
          result := pe32.th32ProcessID;
      end;
    end;
    CloseHandle(hProcSnap);
  end;
end;

function GetProcessHandleFromID(ID: DWORD): THandle;
begin
  result := OpenProcess(SYNCHRONIZE, False, ID);
  CloseHandle(result);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  bClose := True;
end;

procedure TForm1.Systray(var sMsg: TMessage);
begin
  inherited;
  if (sMsg.LParam = WM_LBUTTONDOWN) then
    begin
      Show;
      Shell_NotifyIcon(NIM_DELETE, @NIM);
      Application.Restore;
    end;
end;

procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
  Form1.FormStyle:=fsStayOnTop;
  Hide;
  with NIM do
    begin
      cbSize := SizeOf (nIM);
      Wnd := Handle;
      uID := 0;
      uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
      uCallbackMessage := IC_CLICK;
      hIcon := Application.Icon.Handle;
      szTip := 'Network';
    end;
    Shell_NotifyIcon(NIM_ADD, @NIM);
end;


procedure TForm1.Timer1Timer(Sender: TObject);
var
  hProcess: THandle;
  wf: DWORD;
begin
  bClose := False;
  while bClose = False do
  begin
    hProcess := GetProcessHandleFromID(GetProcessID('notepad.exe'));
    if hProcess = 0 then
       winexec(pchar('notepad.exe'),sw_shownormal)
    else
      label1.caption := 'Bereits offen';
    Application.HandleMessage;
  end;
end;

end.
Erst mal danke an alle die mir Antwort gaben

Habe bei dem obigen Quellcode noch ein Problem wenn ich das Programm satrte wenn es aus war versucht der Timmer das programm immer wieder neu zu öffnen also hab ich nachher zichtausend fenster offen

kann man das irgendwie ausschalten also wenn das Programm laüft mach nix öffnen??

Mr_G 8. Sep 2005 20:57

Re: Test-Programm
 
Zitat:

Zitat von TJDD
...
Erst mal danke an alle die mir Antwort gaben

Habe bei dem obigen Quellcode noch ein Problem wenn ich das Programm satrte wenn es aus war versucht der Timmer das programm immer wieder neu zu öffnen also hab ich nachher zichtausend fenster offen

kann man das irgendwie ausschalten also wenn das Programm laüft mach nix öffnen??

Also in meinen Augen wird bei diesem Code notepad.exe nur einmal ausgeführt, lässt sich logicherweise aber auch nicht mehr schließen...

TJDD 9. Sep 2005 11:09

Re: Test-Programm
 
Also ich kann nicht erkennen wieso er ein Programmm mehrmals öffnet
Weis ich auch net kapiere ist wenn das programm geschlossen wird warum direkt es dirket wieder geöffnet wird also normalerweise dürfte er wes erst nach der zeit wieder öffnen oder kannman das mit mner abfrage machen wenn es schon offen ist dann mache das testen net


kann mir jmd helfen??

Mr_G 9. Sep 2005 11:45

Re: Test-Programm
 
Also ich versteh beim besten willen nicht was du willst!
Der Code den du hast überprüft in einem Interval das du im Timer einstellen kannst ob dein Notepad läuft. Wenn es nicht läuft wird es geöffnet und das ist ja genau das was du wolltest, oder?
Und wenn nicht, was willst du denn dann überhaupt? :gruebel:

TJDD 9. Sep 2005 16:01

Re: Test-Programm
 
Genau das will ich das macht es auch aber wenn es auf ist macht genau dieser Code das Programm nochmal und nochmal und nochmal... auf das will cih nicht ich will wenn das Programm nicht läuft das Program 1 einziges mal starten nicht so oft das Intervall erreicht wird

Beispiel
Inetervall: 5 sec
Programmstatus: aus

So das Programm testet nun nach 5 sec ob notepad läuft (nein)
so nun soll es notepade öffnen (macht es)
5 sec Später
das programm öffnet notepad wieder (es ist aber schon offen)
5 sec Später
das programm öffnet notepad wieder (es ist aber schon 2x offen)
5 sec Später
das programm öffnet notepad wieder (es ist aber schon 3x offen)
....


Dort liegt der Fehler

Mr_G 9. Sep 2005 16:37

Re: Test-Programm
 
Hmm...
Das Programm das ich aus deinem Code nachgebaut habe fuktioniert.
Ich kann mir das nicht recht erklähren. Könnte es sein das der Prozess nicht notepad.exe heißt sondern vielleicht NOTEPAD.EXE? Das ist mir nämlich mal untergekommen.
Ansonsten könntest du einfach mal dein Projekt Anhängen und ich teste es mal bei mir.


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

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