AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Wie (von wo?) wurde ein Programm gestartet?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie (von wo?) wurde ein Programm gestartet?

Ein Thema von gbl · begonnen am 8. Aug 2005 · letzter Beitrag vom 8. Aug 2005
Antwort Antwort
gbl

Registriert seit: 21. Aug 2004
18 Beiträge
 
#1

Wie (von wo?) wurde ein Programm gestartet?

  Alt 8. Aug 2005, 08:15
Ich möchte weiters festellen, wie meine Software gestartet wurde.

Mein Service soll auch als Applikation aufgerufen werden können. Ist ja weiters kein Problem, da es schließlich um eine EXE handelt. Nur wie kann ich feststellen, welche Instanz das Programm aufruft. Der Dienstmanager muß ja schließlich etwas anderes sein als der Commandprompt oder der Explorer? Zur Zeit behelfe ich mich mit einem Aufrufparameter.
______________________________________
cu.
Günter
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#2

Re: Wie (von wo?) wurde ein Programm gestartet?

  Alt 8. Aug 2005, 13:39
Da habe ich doch mal was geschrieben. Guckst du hier:
Delphi-Quellcode:
if IsLocalSystem then
    begin
// SECOND INSTANCE
// Under SYSTEM try to run as a service. This will fail if the app was not
// installed as a service, yet
      ste[0].lpServiceName := pszServiceName;
      ste[0].lpServiceProc := @ServiceMainA;
      ste[1].lpServiceName := nil;
      ste[1].lpServiceProc := nil;
// hand over control to SCM
      StartServiceCtrlDispatcher(ste[0]);
    end
    else
    begin
    // ...
    end;
Download unter (was du brauchst ist der Source von CMDasSYS):
http://assarbad.net/stuff/localsystem.zip / http://assarbad.net/stuff/localsystem.rar

Der Spaß basiert auf der Annahme, daß der Service im Kontext von SYSTEM (LocalSystem) gestartet wird, das Programm selber aber nicht (wenn es also nicht als Service gestartet wurde). Auf dieser Entscheidung basierend wird dann die Kontrolle an den SCM übergeben oder eben die normale Hauptfunktion aufgerufen - zumindest wäre dies bei dir dann wohl so.

Alternativ könntest du dem Service einen Parameter auf den Weg geben, damit das Programm weiß, daß es als Service laufen soll.
  Mit Zitat antworten Zitat
gbl

Registriert seit: 21. Aug 2004
18 Beiträge
 
#3

Re: Wie (von wo?) wurde ein Programm gestartet?

  Alt 8. Aug 2005, 13:58
Hi,

Danke für Deine Mühe.

Zitat:
Der Spaß basiert auf der Annahme, daß der Service im Kontext von SYSTEM (LocalSystem) gestartet wird
Genau damit habe ich ein (Einstellungs) Problem.
Es muß doch möglich sein die Aufrufende Instanz zu ermittlen (Parent-Handle)?

Ich habe das mit dem Notes-Dominoserver gesehen.

Nun ich will nicht "tschentschen". Der Workarrount über den Switch gefällt mir ganz gut.
______________________________________
cu.
Günter
  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 04:59 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