Nil18
Erfahrenes Mitglied
Hallo Leute!
Habe hier ein Problem mit dem IMessageFilter. Und zwar, tritt das Event einfach nicht ein, obwohl der Code eigentlich stimmen sollte.
Ich poste einfach mal den Code und hoffe Ihr könnt mir sagen was ich falsch mache.
Vielen Dank im Voraus!
In der Main Methode steht dann:
Und dann noch die Methode:
Es funktioniert einfach nicht
In DoCleanup(); befindet sich NUR eine MessageBox sowie ein Stop(); für einen Timer...
BITTE um Hilfe!
Habe hier ein Problem mit dem IMessageFilter. Und zwar, tritt das Event einfach nicht ein, obwohl der Code eigentlich stimmen sollte.
Ich poste einfach mal den Code und hoffe Ihr könnt mir sagen was ich falsch mache.
Vielen Dank im Voraus!
C#:
public class MyOwnMFilter : IMessageFilter
{
const int WM_QUERYENDSESSION = 0x11;
/// <summary>
/// Event, daß nun die App abedreht werden soll, weil Abmeldung stattfindet (für Timer)
/// </summary>
public static event System.ComponentModel.CancelEventHandler ApplicationShouldExit = null;
#region IMessageFilter Member
public bool PreFilterMessage(ref Message m)
{
//Wenn abmelden, neustarten, herunterfahren
if (m.Msg == WM_QUERYENDSESSION)
{
System.ComponentModel.CancelEventArgs args = new System.ComponentModel.CancelEventArgs();
args.Cancel = false;
if (ApplicationShouldExit != null)
ApplicationShouldExit(this,args);
//Neustart, Herunterfahren, Abmelden abbrechen
if (args.Cancel)
{
return true;
}
else
{
//Sicherheitshalber
Application.Exit();
}
}
return false;
}
#endregion
}
In der Main Methode steht dann:
C#:
MyOwnMFilter myfilter = new MyOwnMFilter();
MyOwnMFilter.ApplicationShouldExit += new System.ComponentModel.CancelEventHandler(MyOwnMFilter_ApplicationShouldExit);
Application.AddMessageFilter(myfilter);
Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
Und dann noch die Methode:
C#:
//Wird bei jedem SignOffEvent durchgeführt ...
static void MyOwnMFilter_ApplicationShouldExit(object sender, System.ComponentModel.CancelEventArgs e)
{
DoCleanup();
}
C#:
static void Application_ApplicationExit(object sender, EventArgs e)
{
DoCleanup();
}
Es funktioniert einfach nicht

In DoCleanup(); befindet sich NUR eine MessageBox sowie ein Stop(); für einen Timer...
BITTE um Hilfe!
Zuletzt bearbeitet: