Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von AtzeX
Thema: Projekt von Windows Forms auf WPF umstellen.
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Noch ein Versuch:

Ich möchte MVVM im resultierenden Projekt verwenden! Unbedingt! ;-)

Ich wollte es nur für das Gedankenspiel jetzt schnell weglassen, um primär den Fokus auf die wohl notwendige Bearbeitung der Projekt-Datei, sowie sekundär den Austausch der Form-Dateien zu lenken.

Ich möchte nicht pfuschen.

Ich möchte lediglich das Projekt von WF auf WPF umstellen und dann ganz gesittet, verantwortungsvoll und zielgerichtet ein WPF UI aufzubauen, mit allen Paradigmen, die das so mit sich bringt und auch voraussetzt. :-)

Das einzige was ich nicht möchte ist, ein neues Projekt zu erstellen.

Nun klar?

Edit:
Noch ein Zusatz, was das Ziel ist:
Im aktuellen WF Projekt kann ich nur WF Forms hinzufügen, jedoch keine WPF-Forms.
Nach der erhofften Bearbeitung der Projektdatei möchte ich nur noch WPF-Forms und keine WF Forms mehr hinzufügen können.

Edit2:
Ich habe nun hier auf die Frage "Convert csproj file from winform to wpf" eines Anderen diese Aussage gefunden:

Zitat
The short answer for those that don't want to do the comparison themselves is that a WPF .csproj file contains an addition property:
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

Just put that in the first <PropertyGroup>...</PropertyGroup> section, it shouldn't matter where.

The meaning of {60dc8134-eba5-43b8-bcc9-bb4bc16c2548} is that this is a WPF project, and {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} indicates a C# project.

Außerdem verweist der Antwortende noch auf diesen Beitrag:
http://stackoverflow.com/questions/10802198/visual-studio-project-type-guids

Ich werde mir das morgen einmal näher anschauen.

Hat denn zufällig jemand von euch das so schon einmal gemacht?

Thema: Projekt von Windows Forms auf WPF umstellen.
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Da hast du mich leider falsch verstanden.

Ich hatte gehofft klar gemacht zu haben, dass ich das Projekt durchaus als 'korrektes' WPF-Projekt aufziehen möchte, auch mit MVVM.
Nur gedanklich, um das Projekt selber von Windows Forms auf WPF umzustellen, wollte ich der Einfachheit halber MVVM gedanklich weglassen.

Frickeln möchte ich nichts, nur händisch das Projekt von Windows Forms auf WPF umstellen.

Danach möchte ich das Windows Form löschen und ein WPF-UI mit MVVM implementieren.

Thema: Projekt von Windows Forms auf WPF umstellen.
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,

ich habe schon im Internet gesucht, aber entweder mit den falschen Begriffen, oder nicht gründlich genug.
Jedenfalls finde ich nicht konkret für meinen Bedarf Antworten.

Ein bestehendes Windows Forms-Projekt soll in ein WPF-Projekt 'konvertiert' werden.

Das Projekt hat nur ein einziges Windows Form und das möchte ich gerne komplett neu aufbauen.
Es geht also nicht um das Konvertieren der Windows Forms.

Zielsetzung meiner Frage ist, dass ich wissen möchte, ob und wie ich das Projekt selber von Windows Form zu WPF konvertieren kann.

Ich möchte bewusst kein neues Projekt erstellen und die anderen Dateien importieren!

Hintergrund, auch wenn ich das eigentlich mal als gegeben nennen und nicht diskutieren möchte, ist, dass ich im Sourcecode Management System möglichst wenig ändern, also einen möglichst kleinen Footprint hinterlassen möchte.

Allein mit dem Löschen und Hinzufügen der entsprechenden Verweise ist es leider nicht getan.

Aber eigentlich müsste es sich doch mit dem Überarbeiten der Projektdatei und dem Austausch des UI-Forms, wenn wir MVVM hier vom Ansatz mal gedanklich weglassen, umsetzen lassen, oder?

Vielleicht hat das ja schon einmal jemand gemacht?

Thema: Austausch einer DLL durch eine neue Version: Die referenzierende EXE läuft trotzdem noch. Warum?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Vielen Dank!

Und ja, ich meinte natürlich "K" und nicht "L". Hab's schnell korrigiert. ;-)

Bzgl. der Signatur hätte ich in der Tat selber nachschauen können, aber das war ja eher eine 'spontane Zwischenfrage'. ;-)

Thema: Austausch einer DLL durch eine neue Version: Die referenzierende EXE läuft trotzdem noch. Warum?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Danke für die schnelle Antwort!

Ich könnte also "L" beliebig 'aufbohren', auch um Klassen mit non-static Members erweitern usw., und "K" würde "L" weiterhin ohne Murren akzeptieren solange der Name und die Signatur von "M" gleich bleibt (gehört der Name eigentlich auch zur Signatur? :-) )?

Edit:
Habe gerade gesehen, dass du editiert hast. Lese noch mal schnell durch. ;-)

Edit2:
Ok, danke für die Ergänzung.
Aber im zuerst skizzierten Fall von dir, also ohne speziell referenzierte Version, würde meine Frage oben positiv beantwortet werden können?

Thema: Austausch einer DLL durch eine neue Version: Die referenzierende EXE läuft trotzdem noch. Warum?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo.

Ich hätte eine Frage zur Verwendung von Assemblies (DLL) in anderen Projekten:

Ich habe ein Library-Projekt "L", welches ausschließlich eine DLL mit einer statischen Methoden "M" erstellt.

Diese Assembly (DLL-Datei) habe ich nun in einem Konsolen-Projekt "K" referenziert und nutze die Methode "M" darin.
Das Projekt "K" habe ich nun ebenfalls kompiliert und die EXE mit der DLL in einen anderen Ordner "O" kopiert.

Nun habe ich das Projekt "L" modifiziert, indem ich weitere Methoden mit unterschiedlichsten Namen und Signaturen hinzugefügt, sowie die Assembly- und Dateiversion inkrementiert habe.
Das neue Kompilat (die DLL) habe ich nun in den Ordner "O" kopiert und die alte DLL damit überschrieben.

Womit ich nicht gerechnet hätte:
Die EXE lässt sich nach wie vor starten und läuft sauber.

Warum ist das so?

Thema: C#: Übersicht Änderungen 2.0 -> 4.0? Evtl. 'Best Practices' oder ähnlich?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo und danke dir für die Antwort!

Leider ist 4.0 fix, das hatte ich schon angefragt. :-/

Gru0,
AtzeX

Thema: C#: Übersicht Änderungen 2.0 -> 4.0? Evtl. 'Best Practices' oder ähnlich?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen,

leider kann ich nicht allzuviel meiner Zeit in C#/.Net Programmierung investieren, da ich viel mit anderen Projekten zu tun habe.
Mein letztes 'richtiges' C#-Projekt habe ich noch unter dem Framework 2.0 entwickelt.

Nun steht ein größerer Umbau dieses Projektes an und ich habe die Möglichkeit das Framework 4.0 (Kundenvorgabe) zu verwenden.

Das Projekt ist ein Windows Forms-Projekt, jedoch kann sich das im Zuge des Umbaus auch zu WPF entwickeln.

Da ich so eine Gelegenheit natürlich nutzen möchte, mich und meine C# Kenntnisse weiter zu entwickeln, möchte ich schauen, was ich nun besser/anders/eleganter umsetzen kann.

Deshalb meine Frage, ob es irgendwo eine gute Übersicht gibt, was sich zwischen 2.0 und 4.0 getan hat.
Gibt es evtl. auch eine Art 'Best Practices' oder so?

Danke im Voraus!

AtzeX

Thema: ServiceInstaller.ServiceName muss gleich dem der von ServiceBase abgeleiteten Klasse sein?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hat evtl. jemand eine Idee, wo man da sonst mehr Infos zu bekommen könnte?

Thema: ServiceInstaller.ServiceName muss gleich dem der von ServiceBase abgeleiteten Klasse sein?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo.

In der Beschreibung zum ServiceInstaller finden sich Aussagen wie diese:

Zitat
ServiceName must equal those on ServiceBase derived classes.
Zitat
It is crucial that the ServiceName be identical to the ServiceBase.ServiceName of the class you derived from ServiceBase.

Nur finde ich keine Begründung dafür, warum das so sehr wichtig ist, denn mein Dienst kann sowohl installiert als auch genutzt werden, wenn diese Bedingung NICHT erfüllt ist.

Übersehe ich etwas?

Thema: VS: Wie Kommentare bei der Suche im Quelltext ausschließen?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Du meinst, ich sollte mir selber eine Suchfunktion erstellen?

Thema: VS: Wie Kommentare bei der Suche im Quelltext ausschließen?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Theoretisch stimme ich zu, wobei das gerade beim Mehrzeiligen Kommentar doch eher kompliziert werden würde.
Denn die ersten beiden sind Einzeilig zu betrachten und der dritte ja nicht...

Thema: VS: Wie Kommentare bei der Suche im Quelltext ausschließen?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,

ich möchte gerne im meiner Solution nach einem Text suchen, dabei jedoch verhindern, dass auch in Kommentaren gesucht wird.
Eine solche Option im Suchdialog wäre klasse, gibt es jedoch in Visual Studio 2010 nicht.

Gibt es eine Möglichkeit oder z.B. ein AddIn um dies zu bewerkstelligen?

Thema: Felder als Parameter an Methode in der gleichen Klasse übergeben oder nicht?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Danke euch!

Sonst noch Meinungen oder Bekundungen angewandter Praxen?
Bin nach wie vor neugierig! ;-)

Gruß,
AtzeX

Thema: Felder als Parameter an Methode in der gleichen Klasse übergeben oder nicht?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo und danke für die Antworten!

@myUnderTakeR:
Mir geht es nicht um den konstruierten Fall, also den Sinn des Beispiels, sondern um den Vergleich dieser beiden angesprochenen Praktiken. ;-)


@chilic:
Ja, da hast du Recht, es kommt sicherlich auf den Fall an.
Aber kann man sagen, welche Vorteile/Nachteile sich ergeben?

Wenn ich den Member z.B. als Parameter übergebe, sehe ich im aufrufenden Code direkt, dass die aufgerufene Methode damit etwas anstellt.
Wenn sie jedoch direkt das Feld verwendet, sehe ich das nicht so leicht.
Es könnten ja u.U. auch mehrere Felder sein, die die Methode intern verarbeitet.
Da sieht man nicht direkt dass dem so ist. Als Parameter hingegen schon.
Andererseits wären, sagen wir mal 10 Parameter, auch nicht gerade elegant, oder?

Vielleicht gibt es ja noch mehr Vor- oder Nachteile, an die man so direkt nicht denkt?

@JuyJuka:
So egal ist mir das bei privaten Methoden auch nicht, da ich mir Gedanken über einen Programmierstil mache. Deshalb ja die Frage. Funktionieren tut ja beides. :-)

Warum würdest du das Feld über eine Property verwenden?
Und warum sollte diese virtuell sein?


Ich merke jetzt, dass meine Frage eher philisophisch ist, aber guter Stil ist mir halt wichtig. Da arbeite ich gerne dran.
Und schlimmer ist's noch, wenn ich Nachteile einer verwendeten Implementierung übersehe.
Geht das nur mir so? :)

Thema: Felder als Parameter an Methode in der gleichen Klasse übergeben oder nicht?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen.

Ich habe eine recht allgemeine Frage in Bezug auf zwei alternative Möglichkeiten zur Verwendung von / zum Zugriff auf Felder innerhalb von privaten Methoden der selben Klasse.

Lektüre, die das behandelt finde ich leider keine.

Von daher frage ich hier mal in die Runde und habe dazu ein 'doofes' Beispiel gemacht.

Entweder ich nutze in der privaten Methode direkt das Feld:

class FooBar
{
    private string _filename;

    .
    .
    .

    public string Foo()
    {
        Bar(5);
    }

    private string Bar(int amount)
    {
        DoSomethingWithFile(_filename, amount);
    }

    .
    .
    .

}

Oder ich übergebe das Feld als Parameter an die Methode:

class FooBar
{
    private string _filename;

    .
    .
    .

    public string Foo()
    {
        Bar(_filename, 5);
    }

    private string Bar(string filename, int amount)
    {
        DoSomethingWithFile(filename, amount);
    }

    .
    .
    .

}


Wie verfahrt ihr? Was seht ihr für Vor- und Nachteile in den beiden Ansätzen?

Und wie ist das in Anbetracht von Feldern abgeleiteter Klassen zu bewerten?

Danke im Voraus,
AtzeX

Thema: Wie Systray komplett aktualisieren lassen?
Am im Forum: GUI: Windows-Forms

Hallo zusammen,

da ja wieder über ein Jahr ins Land gegangen ist und mich das Thema hin und wieder doch noch nervt, erlaube ich mir, einmal nachzufragen, ob es da mittlerweile neue Möglichkeiten gibt?

Vielleicht eine kleine aber feine API, die mir noch unbekannt ist? :-)

Gruß,
AtzeX

Thema: Problem beim Konvertieren von HTML zu Grafik (PNG).
Am im Forum: Grafik und Sound

Hallo.

Ich muss HTML in PNG konvertieren und habe dazu ein WinForm mit einem WebBrowser-Control erstellt, welches ich mit dem HTML-String füttere.

Das wird auch prima gerendert.
Nun speichere ich dies mittels einer hier im Forum gefundenen Routine:

            // Get the image width and height 
            int screenWidth = webBrowser1.Width;
            int screenHeight = webBrowser1.Height;

            // Set hwnd to the WebBrowser 
            IntPtr myIntptr = this.webBrowser1.Handle;
            int hwndInt = myIntptr.ToInt32();
            IntPtr hwnd = myIntptr;

            // Set hdc to the bitmap 
            Bitmap bm = new Bitmap(screenWidth, screenHeight, System.Drawing.Imaging.PixelFormat.Format16bppRgb555);
            Graphics g = Graphics.FromImage(bm);
            IntPtr hdc = g.GetHdc();

            // Snapshot the WebBrowser 
            bool result = PrintWindow(hwnd, hdc, 0);
            g.ReleaseHdc(hdc);
            g.Flush();

            // Save the bitmap, if successful
            if (result)
                bm.Save(@"Z:\out.png", System.Drawing.Imaging.ImageFormat.Png);

Das resultierende Image hat dann leider nur 96DPI.
Das scheint die des Bildschrims zu sein, da ja quasi ein Screenshot gemacht wurde.

Wenn ich das nun ausdrucke, ist die Qualität entsprechend schlecht.

Meine Frage ist nun:
Habe ich irgendeine Chance, das Image z.B. mit 300DPI zu erstellen?

Gruß,
AtzeX

Thema: Was spricht gegen AppDomain.CurrentDomain.SetData ("DEBUG", "True") als 'globale Variable'?
Am im Forum: Rund um die Programmierung

Ist zumindest ne Idee.
Ich denke mal drüber nach.

Danke dir!

Thema: DataGridView: Erste Zeile als "Filterzeile"
Am im Forum: GUI: Windows-Forms

Ich kann mir das eigentlich nicht vorstellen.
Vielleicht sieht das nur so aus, als wäre das ein einzelnes Objekt/Control.

Ich vermute eher, dass es einzelne Textfelder sind, die optisch mit einem darunterliegenden Grid-Control 'harmonisieren'.

Oder es sind zwei Grid-Controls.
Das obere immer mit einer Zeile und das untere mit den Daten.
Je mehr ich darüber nachdenke, deso eher denke ich, dass es so gelöst wurde.
Das hätte den Vorteil die Spaltenbreiten auch in gleicher Weise synchron zu halten...

Zeig doch mal einen Screenshot.

Gruß,
AtzeX

Thema: Was spricht gegen AppDomain.CurrentDomain.SetData ("DEBUG", "True") als 'globale Variable'?
Am im Forum: Rund um die Programmierung

Hi, danke auch dir.

Die Variable alleine wäre dann aber nicht über Assembly-Grenzen hinweg verfügbar. ;)

Gruß,
AtzeX

Thema: Was spricht gegen AppDomain.CurrentDomain.SetData ("DEBUG", "True") als 'globale Variable'?
Am im Forum: Rund um die Programmierung

Hi, danke für deine Antwort.

Zitat
Wenn du oben geschrieben hast dass über eine Datenbank parametrisiert wird wäre die Datenbank eine Alternative ;)
Nicht unbedingt, denn dann müsste ich diese Information, welche ich aus der Datenbank gewonnen habe, an jede noch so kleine Assembly immer 'durchreichen'.

Oder jede Assembly würde selber an die DB connecten, was aber schon vom Anwendungsdesign her wegfällt.

Der Vorteil meines Ansatzes ist ja die 'quasi Automatik', welche zudem Assembly-übergreifend ist.

Bin aber natürlich für Ideen/Vorschläge offen.

Gruß,
AtzeX

Thema: Was spricht gegen AppDomain.CurrentDomain.SetData ("DEBUG", "True") als 'globale Variable'?
Am im Forum: Rund um die Programmierung

Das ungewollte Überschreiben eines bestehenden Wertes bzw. ungewollte Seiteneffekte kann man ja durch einen etwas außergewöhnlichen Namen umgehen.
Ansonsten spricht jetzt aber wohl nicht wirklich etwas gegen diese Lösung...

Gibt es denn Alternativen (außer der App.Config)?

Thema: Was spricht gegen AppDomain.CurrentDomain.SetData ("DEBUG", "True") als 'globale Variable'?
Am im Forum: Rund um die Programmierung

Hi, danke für den Reply.

Könntest du mir auch sagen, warum das ungeeignet ist?

Edit:
Was meinerseits gegen eine "App.config" spricht, ist, dass ich meine Anwendung (natürlich je nach Anwendungsfall, aber in diesem ist es so) bis auf Ausnahmen über eine zentrale SQL-Datenbank parametrisiere.

Thema: Was spricht gegen AppDomain.CurrentDomain.SetData ("DEBUG", "True") als 'globale Variable'?
Am im Forum: Rund um die Programmierung

Hallo zusammen,

ich überlege, wie ich Assembly-überreifend eine 'globale Variable' erstellen kann.

Der Hintergrund ist der, dass ich in meinem Projekt, welches aus mehreren Assemblies besteht, Code nur ausführen lassen möchte, wenn ich im "Debug"-Modus bin.

Natürlich könnte ich mit der "/DEBUG"-Konstante, bedingter Kompilierung und zwei Sätzen von Assemblies arbeiten, jedoch möchte ich das nicht.
Ich möchte auch im Release meinen 'Debug-Modus' ein- und ausschalten und diesen damit nutzen können.
Hinzu kommt, dass die ein oder andere Assembly gar nicht zum Projekt gehört, sondern als Binary referenziert wird.

Ich habe mir nun folgendes ausgedacht:
In der eigentlichen ausführenden Assembly, also im gegebenen Fall meiner EXE-Datei, habe ich ein Feld

static private bool _debug = false;
hinzugefügt, welches ich z.B. (in diesem Falle exemplarisch fest codiert) mittels einer ebenfalls hier erzeugten AppicationDomain-Property setze:

AppDomain.CurrentDomain.SetData("DEBUG", "True");
_debug = (AppDomain.CurrentDomain.GetData("DEBUG").ToUpper() == "TRUE");

Der Vorteil ist, dass ich in allen meinen Assemblies, welche ich referenziere, nun mit einem Feld wie

static private bool _debug = (String.Format("{0}", AppDomain.CurrentDomain.GetData("DEBUG")).ToUpper() == "TRUE");
diese Property nutzen kann.

Performancetechnisch sollte das kein Engpass sein.

Auch habe ich nicht vor, mehr als eine AppDomain zu verwenden.

Was spricht gegen diesen Ansatz, bzw. was für Alternativen gäbe es?

Gruß,
AtzeX

Thema: "System.Reflection.MethodBase" durch "System.Diagnostics.StackFrame(1)" ersetzen?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

So, ich habe mir mal Testroutinen gemacht.
Alles in allem ist die Technik mit dem StackFrame langsamer, aber das ist im Kontext der Verwendung eher marginal.

Bei 1000000 Wiederholungen habe ich einen Faktor 2-4, je nach CPU-Type (bei x86 ist der Faktor ca. 2, bei x64 ist er ca. 4).

Bei 1000 Wiederholungen sind die Faktoren in etwa gleich (also nach wie vor 2 bzw. 4), aber auf meinem Rechner lediglich im Bereich von 10-20 Millisekunden Unterschied.

Von daher werde ich die Stackframes verwenden.

Gruß,
Axel

Thema: "System.Reflection.MethodBase" durch "System.Diagnostics.StackFrame(1)" ersetzen?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Danke dir, werde ich mir morgen durchlesen. :)

Thema: "System.Reflection.MethodBase" durch "System.Diagnostics.StackFrame(1)" ersetzen?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich hatte ja schon darauf gehofft, dass diese Erfahrungen hier schon mal gesammelt wurden.

Wenn ich das selber teste, muss ich ja, wie du schon schreibst, darauf achten, keine verfälschten Testergebnisse zu produzieren.
Nur wie soll ich das beeinflussen.
Woher soll ich wissen, was der Compiler bei Schleifen z.B. 'weg-optimiert'?

Gruß,
AtzeX

Thema: "System.Reflection.MethodBase" durch "System.Diagnostics.StackFrame(1)" ersetzen?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen.

Momentan nutze ich folgende Membervariable um mir die Klasse für das Logging zu merken:

private static string _className = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name;

Zudem habe ich in jeder Methode, in welcher ich etwas loggen möchte, ganz oben diese Zeile um die aktuelle Methode zu ermitteln:

string methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;

Verwenden tue ich das dann z.B: mit einer statischen Log-Methode (exemplarisch):

Logging.Log(_className, methodName, "Meine Meldung.")

Nun überlege ich, ob ich die Ermittlung des Klassennamens und der Methodennamens nicht doch in die statische Methode "Log" verlege und dort z.B. mit

...System.Diagnostics.StackFrame(1).GetMethod().Name
usw. ermittle.

Ich würde nun gerne wissen, ob das Laufzeitverhalten dadurch verschlechtert wird.
Oder ist das eher marginal?

Gruß,
AtzeX

Thema: Wie Systray komplett aktualisieren lassen?
Am im Forum: GUI: Windows-Forms

@dr4g0n76:
Wenn ich dich richtig verstehe, meinst du diesen Code, richtig?

#define FW(x,y) FindWindowEx(x, NULL, y, L"")
void RefreshTaskbarNotificationArea(){
    HWND hNotificationArea;
    RECT r;
    GetClientRect(
        hNotificationArea = FindWindowEx(
            FW(FW(FW(NULL, L"Shell_TrayWnd"), L"TrayNotifyWnd"), L"SysPager"),
            NULL,
            L"ToolbarWindow32",
            L"Notification Area"),
        &r);
    for (LONG x = 0; x < r.right; x += 5)
        for (LONG y = 0; y < r.bottom; y += 5)
            SendMessage(
                hNotificationArea,
                WM_MOUSEMOVE,
                0,
                (y << 16) + x);
}

Bevor ich versuche den auf C# umzubauen:
Wenn ich richtig sehe, simuliert der aber auch die Maus, oder etwa nicht?

Gruß,
AtzeX