Eigens Thumbnail in Taskbar darstellen

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von VincentTB.

    Eigens Thumbnail in Taskbar darstellen

    Hi,
    nach über 2 Stunden googlen stelle ich meine Frage einfach mal hier: Wie schaffe ich es, dass meine Anwendung als Thumbnail ein von mir definiertes Bild darstellt? Ich meine das hier:


    soll nicht ein "Screenshot" meines Fensters darstellen, sondern ein Bild von mir (eines was ich angebe, also nicht eines, wo ich drauf bin :D).

    Ich habe bereits herausgefunden, dass es über DwmSetIconicThumbnail geht, hier gibts das ganze schön vorgekaut, aber leider in C++: msdn.microsoft.com/en-us/libra…op/dd389411(v=vs.85).aspx
    Außerdem scheinen manche das ganze mit der WindowsFormsExtensions geschafft zu haben, aber die gibt es leider nicht mehr. Jedenfalls habe ich dann versucht, das von dem Artikel umzusetzen:

    C#-Quellcode

    1. [DllImport("dwmapi.dll")]
    2. static extern IntPtr DwmSetIconicThumbnail(IntPtr hWnd, IntPtr hbmp, uint dwSITFlags);
    3. [DllImport("dwmapi.dll")]
    4. internal static extern int DwmSetWindowAttribute(IntPtr hWnd, uint dwAttribute, IntPtr pvAttribute, uint cbAttribute);
    5. private void button1_Click(object sender, EventArgs e)
    6. {
    7. IntPtr handle = this.Handle;
    8. unsafe
    9. {
    10. System.Diagnostics.Debug.Print(DwmSetWindowAttribute(handle, (uint)DWMWINDOWATTRIBUTE.DWMWA_FORCE_ICONIC_REPRESENTATION, new IntPtr(1), (uint)Marshal.SizeOf(true)).ToString());
    11. System.Diagnostics.Debug.Print(DwmSetWindowAttribute(handle, (uint)DWMWINDOWATTRIBUTE.DWMWA_HAS_ICONIC_BITMAP, new IntPtr(1), (uint)Marshal.SizeOf(true)).ToString());
    12. }
    13. }


    Das gibt mir 2x -2147023898 aus. Keine Ahnung was das zu bedeuten hat, aber es stürzt nichts ab.
    Und da kommen die Probleme. In dem Artikel steht, dass eine WM (WindowMessage) kommt, die dann gerne die Bitmap hätte. Die Message "heißt" WM_DWMSENDICONICTHUMBNAIL. Und welchem Wert entspricht das für .Net Nutzer? Wo finde ich sowas? Ich habe schon auf P/Invoke und sonst überall gesucht, aber zu dieser Message nichts gefunden.


    Vielleicht kennt ja sogar jemand eine einfachere Lösung, vielen Dank :)

    PS: Im Grunde brauche ich das ganze für WPF, aber ich denke, dass es, wenn es über WinForms geht, auch mit WPF funktioniert.
    Mfg
    Vincent

    Moin,

    @Nikx hatte dazu im Zusammenhang mit dem Windows API Code Pack mal ein Tutorial geschrieben.
    Thumbnails | Windows API Code Pack

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: