Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   C# Warum klappt Abmeldung bei laufendem Programm nicht? (https://www.delphipraxis.net/75957-warum-klappt-abmeldung-bei-laufendem-programm-nicht.html)

Chewie 27. Aug 2006 20:48


Warum klappt Abmeldung bei laufendem Programm nicht?
 
Der ein oder andere kennt vielleicht mein Programm RunAs-Tray.

Ich hab nun herausgefunden, dass Windows sich nicht mehr abmelden kann, wenn das Programm läuft. Ich weiß aber nicht, was ich machen könnte, was das Abmelden verhindert.

Das einzige, was ich mir vorstellen könnte, dass es damit zu tun hat, ist folgender Ereignishandler:

Code:
void MainFormClosing(object sender, System.ComponentModel.CancelEventArgs e)
      {
         e.Cancel = true;
         Hide();
      }
Das verwende ich, um zu bewirken, dass das Programm bei einem Klick auf das X versteckt wird.

Ist das der Grund oder hat jemand sonst eine Idee, woran das liegen könnte? Der Code ist im Archiv enthalten, falls jemand drüberkucken will.


Danke schonmal!

Daniel G 27. Aug 2006 21:23

Re: Warum klappt Abmeldung bei laufendem Programm nicht?
 
Ich muss im Voraus sagen, dass ich C# nicht wirklich kann. Allerdings würde ich an deiner Stelle dann vielleicht auf die WM_ENDSESSION - Nachricht reagieren.

Zitat:

The WM_ENDSESSION message is sent to an application after the system processes the results of the WM_QUERYENDSESSION message. The WM_ENDSESSION message informs the application whether the session is ending.
Denn mit deinem Befehl verhinderst du ja, dass dein Programm regulär beendet werden kann

DGL-luke 27. Aug 2006 21:33

Re: Warum klappt Abmeldung bei laufendem Programm nicht?
 
Ist bei den Argumenten ein Hinweis azuf den Schließungsgrund drin? Der z.B. aufs Herunterfahren von Windows hinweist?

@Daniel G: Ja, genau das, aber auf nachrichten reagieren ist in C# meist der unschönere Ansatz ;)

Luckie 27. Aug 2006 21:36

Re: Warum klappt Abmeldung bei laufendem Programm nicht?
 
Zitat:

Zitat von DGL-luke
@Daniel G: Ja, genau das, aber auf nachrichten reagieren ist in C# meist der unschönere Ansatz ;)

So kange Windows auf Nachrcihten basiert, wirst du nicht da drumrumkommen.

Daniel G 27. Aug 2006 21:40

Re: Warum klappt Abmeldung bei laufendem Programm nicht?
 
Zitat:

Zitat von DGL-luke
@Daniel G: Ja, genau das, aber auf nachrichten reagieren ist in C# meist der unschönere Ansatz ;)

:shock:

Was ist das denn für eine Sprache, bei der das Verarbeiten von Systemnachrichten ein "unschöner Ansatz" ist? In meinen (nicht - C#) - Augen ist das die einzige sinnvolle Lösung... :gruebel:

Chewie 27. Aug 2006 21:49

Re: Warum klappt Abmeldung bei laufendem Programm nicht?
 
Zitat:

Zitat von DGL-luke
Ist bei den Argumenten ein Hinweis azuf den Schließungsgrund drin? Der z.B. aufs Herunterfahren von Windows hinweist?

Leider nicht. Neben Cancel sind in den Event-Args nur Standardsachen wie ToString etc. drin :?

DGL-luke 27. Aug 2006 21:53

Re: Warum klappt Abmeldung bei laufendem Programm nicht?
 
@Daniel G / Luckie: :shock: Naja, immerhin ist C# fürs .Net-Framework gebaut. Und das ist ein Framework, sollte einem die WinAPI-Arbeit also komplett abnehmen. Dazu gehört auch das Reagieren auf Windows-Nachrichten. Wenn sich das System beendet, sollte das Framework das eben z.B. per Event ans progamm melden - indem es das im MainFormClosing angibt.

Und wenn es keine andere Lösung gibt, muss man halt auf Nachrichten reagieren, das ist aber dann ein Designfehler im .Net-Framework.

Daniel G 27. Aug 2006 21:55

Re: Warum klappt Abmeldung bei laufendem Programm nicht?
 
Zitat:

Zitat von DGL-luke
@Daniel G / Luckie: :shock: Naja, immerhin ist C# fürs .Net-Framework gebaut.

*Nicht gewusst hat'* :stupid:

Wie gesagt, ich kenne mich mit C# nicht aus, aber das wäre die Standard - Prozedur für mich in Win32 - Delphi (und C/C++ sicher auch).

Chewie 27. Aug 2006 21:59

Re: Warum klappt Abmeldung bei laufendem Programm nicht?
 
Ich denke nicht, dass das der einzige (und damit beste) Weg ist, denn eine Applikation statt zu schließen nur zu verstecken und ein Tray-Symbol anzeigen sollte doch nicht außergewöhnliches sein, oder?

Vermutlich muss ich die Ereignisbehandlung anders bewerkstelligen, nur wie?

DGL-luke 27. Aug 2006 21:59

Re: Warum klappt Abmeldung bei laufendem Programm nicht?
 
@Daniel G: Ja, is klar.

Aber z.B. in Linux wirst du die Möglichkeit nicht haben, mal eben einen nachrichtenpoller zu bauen.... was allerdings afaik in .Net möglich ist, Mono etc. werden das wohl emulieren.

@Chewie: Wie bereits gesagt, es ist möglich, du kannst die Nachrichtenschleife anpieksen. Wie genau kann ich dir jetzt nicht sagen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 Uhr.
Seite 1 von 2  1 2      

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