AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Verhindern eine Anwendung mehrfach zu starten

Verhindern eine Anwendung mehrfach zu starten

Ein Thema von Moony · begonnen am 6. Mai 2008 · letzter Beitrag vom 15. Jan 2022
Antwort Antwort
Seite 1 von 6  1 23     Letzte » 
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#1

Verhindern eine Anwendung mehrfach zu starten

  Alt 6. Mai 2008, 11:57
Hallo zusammen,

ich habe versucht mein Programm kein weiteres Mal aufrufen zu lassen, wenn es bereits einmal im System geöffnet ist. Das habe ich folgendermaßen probiert:

Delphi-Quellcode:
  doppelt := FindWindow('TApplication', PChar('meinProgramm'));
  if doppelt <> 0 then
  begin
     if IsIconic(doppelt) then
      ShowWindow(doppelt, SW_RESTORE)
    else SetForegroundWindow(doppelt);
  end
  else begin
    // Programmstart
  end;
aber leider funktioniert das bei der Anwendung nicht. Bei einer anderen schon.

Hoffe ihr könnt mir da weiterhelfen.

Gruß, Moony
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Verhindern eine Anwendung mehrfach zu starten

  Alt 6. Mai 2008, 12:02
Na dann suchen wir doch einfach mal: Hier im Forum suchendoppelstart.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

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

Re: Verhindern eine Anwendung mehrfach zu starten

  Alt 6. Mai 2008, 12:16
Wird das Fenster gefunden, resp ist doppelt <> 0 ?
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.095 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: Verhindern eine Anwendung mehrfach zu starten

  Alt 6. Mai 2008, 12:42
Hi,

ich hoffe mal du hast nicht einfach ohne zu überlegen nen Quelltext per Copy&Paste übernommen?

Falls doch: Check mal, ob dein Application.Title wirklich 'meinProgramm' ist. Bei mir funktioniert der Code.

Mfg
FAlter
Felix Alter
Japanurlaub 2015
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Verhindern eine Anwendung mehrfach zu starten

  Alt 6. Mai 2008, 12:46
Schaumal von Luckie

http://www.delphipraxis.net/internal_redirect.php?t=136
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Verhindern eine Anwendung mehrfach zu starten

  Alt 6. Mai 2008, 14:02
@ toms:
doppelt ist immer <> 0. Egal ob die Anwendung bereits geöffnet ist oder nicht.

@FAlter:
Natürlich NICHT. Da steht der Title statisch drin, wie er bei den Optionen unter Application.Title angegeben ist.

@fuknersascha:
schaue ich mir eben an und probiere das aus.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.095 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#7

Re: Verhindern eine Anwendung mehrfach zu starten

  Alt 6. Mai 2008, 14:07
Hi,

Zitat von Moony:
@ toms:
doppelt ist immer <> 0. Egal ob die Anwendung bereits geöffnet ist oder nicht.
Also doch nicht nachgedacht. Er findet sich selbst. Du hast den Code an der falschen Stelle stehen Es gehört nämlich in die DPR, und in den Else-Teil kommen die Application.XXX rein. Wobei das aus der Code-Lib sicherlich besser geeignet ist, denn der Code hier hat auch einige Schwachstellen.

Mfg
FAlter
Felix Alter
Japanurlaub 2015
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Verhindern eine Anwendung mehrfach zu starten

  Alt 6. Mai 2008, 14:11
Die Zeilen stehen in der *.dpr.

So, habe jetzt den Code con Luckie probiert und wenn ich die Anwendung zum zweiten Mal aufrufe, bekomme ich eine Exception. Ich habe jedoch diesen Code nicht als separate Unit angebunden, sondern meinen alten Source in der *.dpr ersetzt.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.095 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

Re: Verhindern eine Anwendung mehrfach zu starten

  Alt 6. Mai 2008, 14:16
Hi,

Zitat von Moony:
Die Zeilen stehen in der *.dpr.
Entweder gibt es ein anderes Programm, vermutlich auch mit Delphi (oder evtl. C++-Builder) geschrieben, was den gleichen Titel hat, oder du hast es doch an der falschen Stelle (bzw. die Application.XXX stehen VOR dem Code).

Delphi-Quellcode:
program Project1;

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

{$R *.res}


var
  Doppelt: THandle;
begin
  //Sicherstellen, dass zweiter Parameter Application.Title entspricht!
  //Delphi ärgert bei Verwendung einer Konstante.
  doppelt := FindWindow('TApplication', 'Test');
  if doppelt <> 0 then
  begin
     if IsIconic(doppelt) then
      ShowWindow(doppelt, SW_RESTORE)
    else
      SetForegroundWindow(doppelt);
  end
  else
  begin
    Application.Initialize;
    Application.Title := 'Test';
    Application.CreateForm(TForm1, Form1);
    Application.Run;
  end;
end.
Ich persönlich würde die Komponente aus der CodeLib nehmen, da steht was von Parameterübergabe dabei

Mfg
FAlter
Felix Alter
Japanurlaub 2015
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Verhindern eine Anwendung mehrfach zu starten

  Alt 6. Mai 2008, 14:19
Noch mal: JA, es steht an der richtigen Stelle!!!!


In meinem anderen Programm funktioniert das ja.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf