Cover in Programmvorschau in Taskleise als Bild anzeigen
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 45 Antworten in diesem Thema. Der letzte Beitrag () ist von Linux13524.
-
-
-
Also. Ich habe es jetzt so:
VB.NET-Quellcode
- Private Sub frmTest_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Dim x As New IntPtr(1)
- Dim y As New IntPtr(1)
- DwmSetWindowAttribute(Me.Handle, 7, x, Marshal.SizeOf(x))
- DwmSetWindowAttribute(Me.Handle, 10, y, Marshal.SizeOf(y))
- End Sub
- Protected Overrides Sub WndProc(ByRef m As Message)
- Const WM_DWMSENDICONICTHUMBNAIL = &H323
- If m.Msg = WM_DWMSENDICONICTHUMBNAIL Then
- Using bmp As Bitmap = Bitmap.FromFile("C:\test.jpg")
- Dim int As Integer = DwmSetIconicThumbnail(Me.Handle, bmp.GetHbitmap, &H1)
- End Using
- Else
- MyBase.WndProc(m)
- End If
- End Sub
Wenn ich jetzt das Vorschaubild ansehen will wird dort eine Warteanimation angezeigt, aber leider nicht das Bild.
@Artentus
Was meintest du mitUnd du darfst nicht vergessen die HBitmap auch zu zerstören.Mit freundlichen Grüßen
Linux -
Du hantierst hier mit ungemanagedten GDI32-Handles. Diese musst du immer manuell zerstören mit DeleteObject.
-
Also:
Signatur:
Code:
So in etwa?
Funktioniert trotzdem nicht.Mit freundlichen Grüßen
Linux -
-
-
-
-
Überschreitet das Bild möglicherweise die erlaubten Abmessungen?
MSDN schrieb:
The HIWORD of this value is the maximum x-coordinate of the thumbnail. The LOWORD is the maximum y-coordinate. If a thumbnail has a dimension that exceeds one or both of these values, the DWM does not accept the thumbnail. -
-
Es könnte auch hieran liegen:
Linux13524 schrieb:
Marshal.SizeOf(x)
Hier übergibst du die Größe des Pointers, die Funktion will aber die Größe des Werte, auf den der Pointer zeigt.
Außerdem erstellst du mitNew IntPtr(1)
keinen Pointer, der auf 1 zeigt, sondern einen Pointer, der auf Adresse 1 zeigt. Du solltest den Speicher mitMarshal.AllocCoTaskMem
oderMarshal.AllocHGlobal
reservieren.Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Artentus“ ()
-
Ich gebe zu ich habe hier bei weitem nicht alles gelesen und habe auch nicht wirklich viel plan von GDI+. Aber wisst ihr was genau GetHbitmap macht? Wenn nicht wäre vll. mal eine option das using wegzulassen und erst später manuell zu zerstören. Denn wenn das HBitmap teil auf den Speicher deiner Bitmap verweist und du diesen schon freigegeben hast wird verständlicherweise nichts dargestellt. Wie gesagt ich weiß nicht ob da intern der Speicher kopiert wird oder ob der geteilt wird.
Als weiters wäre es vll. mal gut die Remarks durchzulesen. Siehe da: msdn.microsoft.com/en-us/libra…op/dd389411(v=vs.85).aspx Wie gesagt. Weiß aber nicht ob ihr das nicht schon alles längst getan habt. Aber wie wäre es mal WndProc zu überschreiben auf die Message zu warten und dann zu schauen was du da für Koordinaten bekommst. Bist du dir sicher, dass die Bitmap 32bit ist? Irgendwo steht garantiert die Lösung. Einfach mal alles auf msdn durchlesen Nur so als kleine Anmerkung. -
-
-
-
@Gonger96
Du kannst natürlich auch Pointer nach außerhalb verwalten, aber die meisten Windows-Funktionen interpretieren das relativ zum aufrufenden Prozess. Bei ReadProcessMemory kanns du das schön sehen, du musst nur den offset innerhalb des Prozessspeichers angeben, den Rest rechnet Windows dann dazu.
Wenn ich mich nicht ganz irre, dann bezeichnet man das als Paging. -
@Artentus
Ich habs mal getestet du hast Recht. Dann machn wirs so
Mit der Andren natürlich auch noch.
//
@Linux13524
Wenn du den Wait-Cursor auf deiner Form meinst, dass ist normal weils so nicht behandelt wird. Um die Preview auf der Form zu setzen guck dir DwmSetIconicLivePreviewBitmap an. Funzt genauso wie das ersteDieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Gonger96“ ()
-
-
SetIconicLivePreviewBitmap setzt dir die Previewbitmap auf dir Form. Heißt wenn du in der Taskbar über son Ding hovers, die Preview aufpoppt und du mitm Cursor darüber hoverst, dann wird alles minimiert und dein Fenster gezeigt. Diese Preview wird abgeändert. Beim Anderen wird die Preview in der Taskbar geändert
-
Ähnliche Themen
-
Glubschi43 - - Sonstige Problemstellungen
-
4 Benutzer haben hier geschrieben
- Linux13524 (18)
- Artentus (16)
- Gonger96 (9)
- thefiloe (3)