AGB  ·  Datenschutz  ·  Impressum  







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

anderes Programm beenden

Ein Thema von delphin06 · begonnen am 4. Mär 2008 · letzter Beitrag vom 5. Mär 2008
Antwort Antwort
delphin06

Registriert seit: 18. Jun 2006
154 Beiträge
 
#1

anderes Programm beenden

  Alt 4. Mär 2008, 16:15
Hallo

Ich wollt mal fragen ob jemand weiß wie man eine andere Anwendung beendet ohne diese zu terminieren.

Ich hab Ein Hauptprogramm und eine extra Anwendung für die Optionseinstellungen. Wenn man jetzt die Optionen verändert hat, soll (wenn das Hauptprogramm läuft) das Hauptprogramm beendet werden und anschließend neu gestartet werden, damit es auch wirklich die neuen Einstellungen benutzt.

Das Problem ist nur, dass das Hauptprogramm nicht so einfach beendet werden kann sondern nur über ein Popupmenü in der TNA. Ein normales Schließen sorgt nur dafür das es in die TNA geschickt wird. Könnte man vieleicht irgendwie auf dieses Popupmenü zugreifen von der Options-Anwendung?

naja Notfalls könnt ich vor aufrufen der Optionen canclose auf true setzten. Aber vieleicht gibt da ja ne elegante Lösung über das Popupmenü. (Popupmenü -> beenden)

Gruß
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: anderes Programm beenden

  Alt 4. Mär 2008, 16:26
Zitat:
Ich wollt mal fragen ob jemand weiß wie man eine andere Anwendung beendet ohne diese zu terminieren.
Bitte was? Beenden, aber nicht terminieren?
Am einfachsten ist es, wenn du in deinem Hauptprogramm auf irgendeine Fensternachricht gesondert reagierst.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
delphin06

Registriert seit: 18. Jun 2006
154 Beiträge
 
#3

Re: anderes Programm beenden

  Alt 4. Mär 2008, 17:11
Wie lege ich denn in meinem Programm eine eigene Fensternachricht fest? Das wäre nämlich ne sehr gute möglichkeit!
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: anderes Programm beenden

  Alt 4. Mär 2008, 18:40
Wenn es dein eigenes Programm ist, dann sende doch eine WM-Quit-Nachricht an das Application-Window (welches das am weitesten übergeordnete sein sollte).
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
delphin06

Registriert seit: 18. Jun 2006
154 Beiträge
 
#5

Re: anderes Programm beenden

  Alt 4. Mär 2008, 19:07
Danke euch beiden funktioniert genau so wie ich mir das Vorgestellt habe!

Für Leute die sowas nochmal brauchen:

Im Hauptprogramm:
Delphi-Quellcode:
...

  public
    { Public-Deklarationen }
    procedure WndProc(var Msg: TMessage); override;

...

procedure TForm1.WndProc(var Msg: TMessage);
begin
  if Msg.Msg = WM_QUIT then
    begin
      //Irgendwelche Aktionen durchführen
    end;
  inherited;
end;

Und im Programm mit dem man Beenden will (Findwindow am besten mit XSpy o.ä.) :
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  var
  wnd: HWND;
begin
  wnd := FindWindow('namederform', 'namedesprogramms');

  if wnd <> 0 then
  begin
    Sendmessage(wnd,WM_QUIT,0,0);
  end;
end;
Gruß


P.S. Wenn ich ich WM_Quit nur an diese Form sende, dann gibt es doch keine Konflikte mit anderen Programmen oder? Also nich das irgendein anderes Programm dadurch beednet wird...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: anderes Programm beenden

  Alt 4. Mär 2008, 19:09
Das kann höchstens passieren, wenn es ein anderes Fenster mit den Kriterien für FindWindow gibt, das dann vor Deinem gefunden wird.
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 sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: anderes Programm beenden

  Alt 4. Mär 2008, 19:23
Zitat von delphin06:
P.S. Wenn ich ich WM_Quit nur an diese Form sende, dann gibt es doch keine Konflikte mit anderen Programmen oder? Also nich das irgendein anderes Programm dadurch beednet wird...
Mit WM_Quit beendest du eigentlich die MEssageschleife (sofern du über Postmessage sendest) und damit das Programm Bei deinem Konzept würde ich lieber eine eigene Message (WM_User+n mit n..natürlich Zahl) nehmen.


Übrigesn musst du nicht die wndProc-Methode überschreiben, du kannst auch eine Methode definieren:
  procedure xyz(var msg:TMessage); message WM_User+n;
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
delphin06

Registriert seit: 18. Jun 2006
154 Beiträge
 
#8

Re: anderes Programm beenden

  Alt 5. Mär 2008, 13:30
Ja gut OK...mach ich dann mit eigener Message...aber es kann eigentlich nicht vorkommen, dass ein Window mit den selben Kriterien gefunden wird. Also das ist absolut unwahrscheinlich in meinem Fall!

Wieder was gelernt
  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 00:19 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