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
Außerdem scheinen manche das ganze mit der
Das gibt mir 2x
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"
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.
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).aspxAuß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
- [DllImport("dwmapi.dll")]
- static extern IntPtr DwmSetIconicThumbnail(IntPtr hWnd, IntPtr hbmp, uint dwSITFlags);
- [DllImport("dwmapi.dll")]
- internal static extern int DwmSetWindowAttribute(IntPtr hWnd, uint dwAttribute, IntPtr pvAttribute, uint cbAttribute);
- private void button1_Click(object sender, EventArgs e)
- {
- IntPtr handle = this.Handle;
- unsafe
- {
- System.Diagnostics.Debug.Print(DwmSetWindowAttribute(handle, (uint)DWMWINDOWATTRIBUTE.DWMWA_FORCE_ICONIC_REPRESENTATION, new IntPtr(1), (uint)Marshal.SizeOf(true)).ToString());
- System.Diagnostics.Debug.Print(DwmSetWindowAttribute(handle, (uint)DWMWINDOWATTRIBUTE.DWMWA_HAS_ICONIC_BITMAP, new IntPtr(1), (uint)Marshal.SizeOf(true)).ToString());
- }
- }
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.