AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Zusatzprogramm nur beim 1.Start des Hauptprogrammmes starten
Thema durchsuchen
Ansicht
Themen-Optionen

Zusatzprogramm nur beim 1.Start des Hauptprogrammmes starten

Ein Thema von m-werk · begonnen am 2. Okt 2002 · letzter Beitrag vom 3. Okt 2002
Antwort Antwort
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#1

Zusatzprogramm nur beim 1.Start des Hauptprogrammmes starten

  Alt 2. Okt 2002, 17:07
Hallo Leute,

ich habe ein Hauptprogramm und ein Zusatzprogramm (Update). Beides sind EXE-Dateien. Das Zusatzprogramm macht ein Update auf eine Datenbank.

Nun möchte ich das Zusatzprogramm, sobald der User das Hauptprogramm zum 1. Mal (Nach der Neuinstallation) startet, dass zuerst das Zusatzprogramm gestartet wird.
Sobald der User im Zusatzprogramm auf OK klickt, soll erst das Hauptprogramm gestartet werden.

Sobald der User aber das 2. mal das Programm startet, dann soll aber das Zusatzprogramm NICHT mehr gestartet werden. Ich könnte mir einen Eintrag in der Registry vorstellen.

Wie kann ich das lösen
Grüße, m-werk
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2
  Alt 2. Okt 2002, 17:12
Nur einmal starten Am besten ein erfolgreiches Update in der Registry oder in einer INI File sichern. Danach kann Program eins an der entsprechenden Stelle nachschauen, ob das Update noch ausgeführt werden muss. Oder, das Update Program wird nach dem erfolgreichen Update gelöscht. (Kann nicht mehr ausgeführt werden)

Warten bis Update done Schau mal im Forum nach "Anwendung ausführen" oder so, hatten wir vor ein paar Tagen erst eine Lösung für.
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#3
  Alt 2. Okt 2002, 17:19
Moin m-werk,

wenn ich das richtig verstanden habe macht das Zusatzprogramm nur ein Update auf die Datenbank.
Wäre es da nicht am einfachsten im Hauptprogramm zu prüfen, welche Version die DB hat, und dann, für den Fall, dass eine alte Version gefunden wird, das Zusatzprogramm zu starten?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4
  Alt 2. Okt 2002, 20:57
Hallo Leute,

@Admin : hier habe ich vorher was gepostet, ist weg. Vielleicht auch diesen Beitrag verschieben bei FAQ oder so. Werde oft nach sowas gefragt.

Vielleicht ist das hier für den gewünschten Zweck zuviel, jedenfalls funktionierts. Es geht um sogenannte Semaphoren (Fremdwörterlexikon : Signalflagge (griech.)). Wie man am Quelltext sieht, ist es nicht von mir alleine, aber weiß nicht mehr wo's herkam. Das Prinzip ist eigentlich leicht zu verstehen. So wie ein Zug, der bei grün fahren darf und bei rot nicht, so kann ein Programm nur gestartet werden, wenn es nicht bereits aktiv ist. In dieser Variante (es gibt auch andere) kann also ein Programm, selbst wenn es minimiert wurde, nicht noch
einmal gestartet werden. Wird dies versucht, so wird das in der Taskleiste "geparkte" maximiert und ist noch genau so, wie es vor der Minimierung war (Eingabefelder usw.). Mehrfachstarts, die das System eventuell abstürzen lassen sind dann ausgeschlossen.

Folgende Unit muß in die USES Liste :

Code:
unit sema;

interface

uses
  Windows, Messages,SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

function BereitsAktiv: Boolean;

IMPLEMENTATION

function BereitsAktiv: Boolean;
var
  semName,
  appClass: PChar;
  hSem   : THandle;
  hWndMe : HWnd;
  appTitle: Array[0..MAX_PATH] of Char;
begin
  // Init
  Result := FALSE;
  GetMem(semName,15);
  GetMem(appClass,15);
  StrPCopy(semName,'sema');
  StrPCopy(appClass,'TApplication');
  StrPCopy(appTitle,ExtractFileName(Application.Title));

  // Create a Semaphore in memory. If this is the
  // first instance, then hSem's value should be 0.
  hSem := CreateSemaphore(nil,0,1,semName);

  // Check to see if the semaphore exists
  if (hSem <> 0) and (GetLastError() =
                      ERROR_ALREADY_EXISTS) then
    begin
      CloseHandle(hSem);

      // Get the current window's handle then change
      // its title so we can look for the other instance
      hWndMe := FindWindow(appClass,appTitle);
      SetWindowText(hWndMe,'ZZZZZZZ');

      // Search for other instance of this window then bring
      // it to the top of the Z-order stack. We find it by
      // matching the Application Class and
      // Application Title.
      hWndMe := FindWindow(appClass,appTitle);
      if (hWndMe <> 0) then
        begin
          BringWindowToTop(hWndMe);
          ShowWindow(hWndMe,SW_SHOWNORMAL);
        end;

      Result := TRUE;
    end;

  // Destroy PChars
  FreeMem(semName,15);
  FreeMem(appClass,15);
end;

end.
Im DPR muß noch folgende Änderung rein :

Code:
{$R *.res}

begin
  if NOT BereitsAktiv then
    begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.CreateForm(TDataModul, DataModul);
      Application.Run;
    end
  else
    Application.Terminate;
end.
Gruß
Hansa
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#5
  Alt 3. Okt 2002, 08:03
Hi Leute, Danke erst einmal für die Antworten.

Ich habe mir da heute in der Früh folgendes überlegt.


Ich werde ganz einfach das Zusatzprogramm (EXE) Nach der Installation automatisch starten lassen. Das funktioniert auch.
Grüße, m-werk
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:48 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