AGB  ·  Datenschutz  ·  Impressum  







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

Task beenden

Ein Thema von N30N · begonnen am 14. Sep 2007 · letzter Beitrag vom 31. Jan 2008
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#11

Re: Task beenden

  Alt 30. Jan 2008, 18:47
Zitat von Blackstar:

sollte er nicht mit execheck herausfinden ob das programm das übergeben wird gerade läufft?
warum öffnet er es bei jedem TimerTick erneut?
In ExeCheck wird ja nach dem Fenster-Titel gesucht. Du übergibst der Funktion aber
den Exe-Namen. Zudem übergibst du der Funktion FindWindow den String 'ExeName' und nicht den Parameter ExeName.

PS:

Die Funktion ExeCheck lässt sich einfacher schreiben:

Delphi-Quellcode:
function TForm1.Execheck(exename:string): boolean;
var
   Handle: HWND;
begin
   Handle := FindWindow(exename, nil);
   Result := Handle <> 0;
end;
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Blackstar
Blackstar

Registriert seit: 7. Mär 2007
10 Beiträge
 
#12

Re: Task beenden

  Alt 31. Jan 2008, 15:12
edit: funzt immernoch nicht so ganz, siehe unten

da der titel des fensters aus Dateipfad und .Exe name bestand hab ich so gelöst

fals es jemanden interessiert hier ist der code:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
path:=ExtractFilePath(ParamStr(0));
end;

function TForm1.Execheck(exename:string): boolean;
var
   Handle: HWND;
begin
   Handle := FindWindow('exename', nil);
   Result := Handle <> 0;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if world=true then begin
if ExeCheck(path+'world.exe')=false then MyShellExecute('world.exe');
end;

if realm=true then begin
if ExeCheck(path+'realmserver.exe')=false then MyShellExecute('realmserver.exe') ;
end;

if login=true then begin
if ExeCheck(path+'loginserver.exe')=false then MyShellExecute('logonserver.exe');
end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: Task beenden

  Alt 31. Jan 2008, 15:26
Das würde ich ein wenig anders schreiben:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if world and not ExeCheck(path+'world.exe') then
    MyShellExecute('world.exe');

  if realm and not ExeCheck(path+'realmserver.exe') then
    MyShellExecute('realmserver.exe') ;

  if login and not ExeCheck(path+'loginserver.exe') then
    MyShellExecute('logonserver.exe');

end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Blackstar
Blackstar

Registriert seit: 7. Mär 2007
10 Beiträge
 
#14

Re: Task beenden

  Alt 31. Jan 2008, 15:51
hmm scheint doch nicht so ganz zu funktionieren wie ich mir das vorstelle

er öffnets immernoch bei jedem timertick

liegts vielleicht immernoch an dem falschen fenster titel?

beispiel: Die Datei hat im Fenster stehen: C:\file.exe

dann ist doch dies richtig?
Handle := FindWindow('C:\file.exe', nil);
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Task beenden

  Alt 31. Jan 2008, 15:53
Wenn Du nach dem Fenstertitel gehst, dann andersrum:Handle := FindWindow(nil, 'C:\file.exe');
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Blackstar
Blackstar

Registriert seit: 7. Mär 2007
10 Beiträge
 
#16

Re: Task beenden

  Alt 31. Jan 2008, 16:43
geht komischerweise auch nicht....

Delphi-Quellcode:
function TForm1.Execheck(exename:string): boolean;
var
   Handle: HWND;
begin
   Handle := FindWindow(nil,'exename');
   Result := (Handle <> 0);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if world and not ExeCheck(path+'ascent-world.exe') then
    MyShellExecute('ascent-world.exe');

  if realm and not ExeCheck(path+'ascent-realmserver.exe') then
    MyShellExecute('ascent-realmserver.exe') ;

  if login and not ExeCheck(path+'ascent-logonserver.exe') then
    MyShellExecute('ascent-logonserver.exe');
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#17

Re: Task beenden

  Alt 31. Jan 2008, 16:51
Dann würde ich erstmal testen, ob ExeCheck so, wie Du es aufrufst, funktioniert.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 18:45 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