QuickView.exe (2.3)

    • Release

    Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von Niko Ortner.

      QuickView.exe (2.3)

      Name des Programms:
      QuickView 2.3

      Kurze Beschreibung:
      Ein ganz schlicht gehaltenes Bildanzeigeprogramm.
      Screenshot:
      Ein Screenshot des Spiels "PowderToy" ist geöffnet und das Kontext-Menü wird angezeigt:

      Beispiel für eine Statusmeldung:
      Bild 2 von 2 im aktuellen Ordner (mit dem Namen "Screenshot1.png") wird geladen.


      Detailierte Beschreibung:
      Das Programm zeigt das Bild an, dessen Pfad als Befehlszeilenargument übergeben wurde. Das Programm wird mit einem Doppelklick oder mit der Escape-Taste beendet.
      Das Bild wird dabei an den Bildschirm angepasst.
      Mit dem Mausrad und den Pfeiltasten Links und Rechts kann zwischen den Bildern, die sich im selben Ordner befinden, gewechselt werden.
      Die geöffneten Bilder werden in einen Cache geladen. Dadurch werden Bilder beim zweiten Mal wesentlich schneller angezeigt. Sobald dem Programm der Arbeitsspeicher ausgeht, wird der Cache automatisch geleert. Das kann auch manuell über das Kontext-Menü erfolgen.
      Bilder (mit Ausnahme von Gif-Bildern) können gedreht werden (Hilfreich, wenn z.B. Fotos mit gedrehter Kamera gemacht wurden).
      Gif-Dateien werden seit Version 2 auch im Cache abgelegt, da die Dateien nicht mehr über PictureBox.Load(Path) geladen, sondern selbst animiert werdern.
      Links oben werden Statusmeldungen angezeigt.
      Es kann gewählt werden, auf welchem Bildschirm das Programm angezeigt wird:
      • Automatisch: (Getestet bei Windows 8 64Bit) Das Programm wird auf dem Bildschirm angezeigt, auf dem sich die Datei befindet, die geöffnet wurde.
      • Gesamter Anzeigebereich: Das Programm wird über alle Bildschirme gezogen (SystemInformation.VirtualScreenSize)
      • Immer Bildschirm 1, 2...: Das Programm wird immer auf dem ausgewählten Bildschirm angezeigt.
      Seit Version 2.1 kann das Bild mit den Kontextmenüeinträgen "Nach links" und "Nach rechts" unabhängig von der gerade genannten Einstellung, auf einen anderen Bildschirm verschoben werden. Nützlich, wenn man z.B. die Einstellung "Automatisch" behalten will, das aktuelle Bild aber gerade auf dem anderen Bildschirm anzeigen lassen will.

      Entstehung:
      Früher habe ich ein Programm namens "Nero PhotoSnap Viewer" verwendet. Nach einem Umzug auf ein anderes Betriebssystem (schon einige Zeit her) hat dieses nicht mehr funktioniert. Dadurch ist der Vorgänger dieses Programms entstanden. Ich habe das alte Programm mal überarbeitet (das war noch mit Option Strict Off programmiert) und habe mir gedacht, dass es vielleicht für andere nützlich sein könnte.

      Verwendete Programmiersprache und IDE:
      Visual Basic .Net (IDE: VB 2010 Express)

      Vom Programm erstellte Dateien/Ordner:
      Datei: %AppData%\Local\QuickView\Settings.ini

      Systemanforderungen:
      .NET Framework 4.0 oder 2.0 (Download entsprechend auswählen)
      Keine Besonderheiten.

      ToDo-Liste:
      • (Erledigt) Multiscreen-Support
      • (Erledigt) Einstellungen speichern (Hintergrund und Bildschirmeinstellung)
      • (Erledigt) Flackern beim ersten Laden eines Bildes verhindern.
      • (Erledigt) Anzeige temporär verschiebbar machen.
      Bekannte Bugs:
      • (behoben... mehr oder weniger) (Getestet unter Windows 8 64Bit) Wenn sich die Datei, die geöffnet wird, auf dem rechten Bildschirm befindet (z.B. in einem Explorerfenster), dann wird das Programm auf dem rechten Bildschirm angezeigt, aber nicht maximiert.
        Update: Dieses Verhalten mache ich mir zunutze, um das Programm automatisch auf dem richtigen Bildschirm anzeigenzulassen.
      • (Behoben) Wird das Programm ohne Befehlszeilenargument (oder mit einem ungültigen Pfad) gestartet, treten diverse Fehler beim Interagieren auf.
      • (Behoben) Beim Anzeigen von Gif-Bildern mit der FW 2.0 -Version kann es zu Fehlern kommen (Allgemeiner Fehler in GDI+). Siehe Post #10.
        Da ich Gif-Bilder nicht mehr über PictureBox.Load(Path) lade, sondern selbst animiere, hat sich dieser Bug erledigt.
      • (Behoben) Bug beim automatischen Leeren des Caches, sobald der Arbeitsspeicher knapp wird.
      • (Behoben) Beim Öffnen von von fehlerhaften Dateien fliegt eine Exception. Es wird jetzt eine Meldung angezeigt.

      Download:
      QuickView (FW4).zip (24.6KB gepackt, 58KB entpackt)
      QuickView (FW2).zip (20.6KB gepackt, 47.5KB entpackt)

      Lizenz/Weitergabe:
      Darf weiter gegeben werden, solange keine Gegenleistung verlangt wird.
      Dekompilieren: Von mir aus... Einfacher wäre, mich nach dem Quellcode zu fragen (bzw. nach Teilen).
      Weiterverwenden (in anderen Programmen) und Einkompilieren: Kein Problem. Es wäre schön, wenn man mich informieren würde, damit ich bescheid weiß.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils

      Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Niko Ortner“ ()

      Programm erfüllt seinen Zweck, konnte aber nichts entdecken was der Windows-Bildbetrachter nicht kann. (Was macht dein Bildbetrachter besonders?)

      Wenn man das Programm ohne Parameter startet und einen rechtsklick macht kommt das:
      Spoiler anzeigen
      Informationen über das Aufrufen von JIT-Debuggen
      anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

      ************** Ausnahmetext **************
      System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
      bei QuickView.BipmManager.get_IsGifImage()
      bei QuickView.Form_Main.PrepareMenu()
      bei QuickView.Form_Main._Lambda$__3(Object a0, CancelEventArgs a1)
      bei System.Windows.Forms.ToolStripDropDown.OnOpening(CancelEventArgs e)
      bei System.Windows.Forms.ToolStripDropDown.SetVisibleCore(Boolean visible)
      bei System.Windows.Forms.ContextMenuStrip.SetVisibleCore(Boolean visible)
      bei System.Windows.Forms.ToolStripDropDown.Show(Control control, Point position)
      bei System.Windows.Forms.ContextMenuStrip.ShowInternal(Control source, Point location, Boolean isKeyboardActivated)
      bei System.Windows.Forms.Control.WmContextMenu(Message& m, Control sourceControl)
      bei System.Windows.Forms.Control.WmContextMenu(Message& m)
      bei System.Windows.Forms.Control.WndProc(Message& m)
      bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
      bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
      bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


      ************** Geladene Assemblys **************
      mscorlib
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.5466 (Win7SP1GDR.050727-5400).
      CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.
      ----------------------------------------
      mscorlib.resources
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.5466 (Win7SP1GDR.050727-5400).
      CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.
      ----------------------------------------
      QuickView
      Assembly-Version: 1.0.0.0.
      Win32-Version: 1.0.0.0.
      CodeBase: file:///C:/Users//Desktop/QuickView.exe.
      ----------------------------------------
      Microsoft.VisualBasic
      Assembly-Version: 8.0.0.0.
      Win32-Version: 8.0.50727.5420 (Win7SP1.050727-5400).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll.
      ----------------------------------------
      System
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.5466 (Win7SP1GDR.050727-5400).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll.
      ----------------------------------------
      System.Windows.Forms
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.5460 (Win7SP1GDR.050727-5400).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
      ----------------------------------------
      System.Drawing
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.5462 (Win7SP1GDR.050727-5400).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
      ----------------------------------------
      System.Runtime.Remoting
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.5420 (Win7SP1.050727-5400).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll.
      ----------------------------------------
      System.Windows.Forms.resources
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.5420 (Win7SP1.050727-5400).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
      ----------------------------------------

      ************** JIT-Debuggen **************
      Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
      Konfigurationsdatei der Anwendung oder des Computers
      (machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
      Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.

      Zum Beispiel:

      <configuration>
      <system.windows.forms jitDebugging="true" />
      </configuration>

      Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
      Ausnahmen an den JIT-Debugger gesendet, der auf dem
      Computer registriert ist, und nicht in diesem Dialogfeld behandelt.


      Außerdem kam bei mir nach 6 Bildern das: //EDIT: Das war nen .gif
      Spoiler anzeigen
      Informationen über das Aufrufen von JIT-Debuggen
      anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

      ************** Ausnahmetext **************
      System.Runtime.InteropServices.ExternalException: Allgemeiner Fehler in GDI+.
      bei System.Drawing.Image.SelectActiveFrame(FrameDimension dimension, Int32 frameIndex)
      bei System.Drawing.ImageAnimator.ImageInfo.UpdateFrame()
      bei System.Drawing.ImageAnimator.UpdateFrames()
      bei System.Windows.Forms.PictureBox.OnPaint(PaintEventArgs pe)
      bei System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer, Boolean disposeEventArgs)
      bei System.Windows.Forms.Control.WmPaint(Message& m)
      bei System.Windows.Forms.Control.WndProc(Message& m)
      bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
      bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
      bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


      ************** Geladene Assemblys **************
      mscorlib
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.5466 (Win7SP1GDR.050727-5400).
      CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.
      ----------------------------------------
      mscorlib.resources
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.5466 (Win7SP1GDR.050727-5400).
      CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.
      ----------------------------------------
      QuickView
      Assembly-Version: 1.0.0.0.
      Win32-Version: 1.0.0.0.
      CodeBase: file:///C:/Users//Desktop/QuickView.exe.
      ----------------------------------------
      Microsoft.VisualBasic
      Assembly-Version: 8.0.0.0.
      Win32-Version: 8.0.50727.5420 (Win7SP1.050727-5400).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll.
      ----------------------------------------
      System
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.5466 (Win7SP1GDR.050727-5400).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll.
      ----------------------------------------
      System.Windows.Forms
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.5460 (Win7SP1GDR.050727-5400).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
      ----------------------------------------
      System.Drawing
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.5462 (Win7SP1GDR.050727-5400).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
      ----------------------------------------
      System.Runtime.Remoting
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.5420 (Win7SP1.050727-5400).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll.
      ----------------------------------------
      System.Drawing.resources
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.5420 (Win7SP1.050727-5400).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing.resources/2.0.0.0_de_b03f5f7f11d50a3a/System.Drawing.resources.dll.
      ----------------------------------------
      System.Windows.Forms.resources
      Assembly-Version: 2.0.0.0.
      Win32-Version: 2.0.50727.5420 (Win7SP1.050727-5400).
      CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
      ----------------------------------------

      ************** JIT-Debuggen **************
      Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
      Konfigurationsdatei der Anwendung oder des Computers
      (machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
      Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.

      Zum Beispiel:

      <configuration>
      <system.windows.forms jitDebugging="true" />
      </configuration>

      Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
      Ausnahmen an den JIT-Debugger gesendet, der auf dem
      Computer registriert ist, und nicht in diesem Dialogfeld behandelt.


      Wie ist eigentlich das Beenden gedacht? ESC geht nicht und im Kontextmenü gibts keinen Eintrag?!
      LG DiePod

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DiePod“ ()

      @DiePod: Danke für's Testen.

      Welchen Windows-Bildbetrachter meinst Du? Den von Windows 8? Der kann, soweit ich das gesehen habe, nicht durch die Bilder wechseln.
      Die Windows Bild- und Faxanzeige ist mir etwas zu "ineffektiv" mit der Bildfläche und man muss unten die Buttons drücken, um durch die Bilder zu wechseln.

      Das Programm wurde nicht dafür gedacht, ohne Parameter gestartet zu werden. Aber ich werde da eine Abfrage einbauen.

      Beendet wird das Programm mit einem Doppelklick (Habe ich vergessen, in die Beschreibung zu stellen). Die Escape-Taste werde ich noch hinzufügen.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Niko Ortner“ ()

      @J-M: Puh, also darüber muss ich noch nachdenken.
      Theoretisch möglich, aber nötig?

      PS: Deadmau5 FTW!


      Edit:
      @DiePod:
      Das erste Problem ist behoben (Startpost aktualisiert).
      Aber ich kann das zweite Problem nicht reproduzieren. Kannst Du die Gif-Datei mal hier hochladen? Dann kann ich testen, ob es bei mir auch nicht funktioniert.
      Laut dem StackTrace wird kein Benutzercode ausgeführt. Deshalb vermute ich mal, dass der System.Drawing.Imaging.ImageAnimator ein Problem mit dem Bild hat.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Niko Ortner“ ()

      @DiePod:
      Meinst Du das hier?:


      Das Standard-Programm für Bilddateien bei Windows 8 kann, wenn man ein Bild direkt öffnet (also öffnen mit -> Programm auswählen bzw. Doppelklick, wenn es verknüpft ist), nicht zwischen den Dateien im selben Ordner wechseln. Allerdings kann es Bilder aus diversen Quellen (Facebook, SkyDrive, Flickr und der Bibliothek) anzeigen. Und dort kann man dann mit dem Mausrad und mit den Pfeiltasten wechseln.
      Aber um ein Bild schnell mal anzuzeigen ist das Programm nicht gedacht. Denn es dauert (bei mir) ~ 2 Sekunden, bis das Programm geöffnet ist. Und um es zu schließen muss man die Metro-App-Schließen-Geste verwenden (Ganz oben am Bildschirmrand angreifen und nach unten ziehen. Da ist man mit dem Doppelklick doch etwas schneller dran.

      Ich denke mal, mein Programm "zeichnet sich dadurch aus" (wenn man das so nennen kann), dass man es schnell öffnen und wieder schließen kann und dass es ohne viel Extras kommt. Deswegen auch "Quick"View.


      Ich möchte Dich noch auf
      Kannst Du die Gif-Datei mal hier hochladen?
      hinweisen ;)
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      Ok.
      Multiscreen-Support und Einstellungen speichern ist eingebaut.
      Ob das automatische Auswählen des Bildschirmes auch auf anderen Betriebssystemen funktioniert, weiß ich noch nicht.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      @DiePod:
      Ok. Ich bin dem Problem auf der Spur.
      Der Fehler tritt (beim Debuggen) bei folgendem auf:

      VB.NET-Quellcode

      1. PictureBox.Load(Path)

      Hier erscheint diese Meldung:

      System.ObjectDisposedException überschreitet eine systemeigene/verwaltete Grenze.
      Message=Auf eine geschlossene Datei kann nicht zugegriffen werden.
      ObjectName=""
      Source=mscorlib
      StackTrace:
      bei System.IO.__Error.FileNotOpen()
      bei System.IO.FileStream.get_Position()
      bei System.Drawing.Internal.GPStream.Seek(Int64 offset, Int32 origin)
      InnerException:


      Das Problem tritt aber nur bei den Frameworks 2.0, 3.0, 3.5 und 3.5 Client Profile auf. Bei 4.0 und 4.0 Client Profile funktioniert alles einwandfrei.
      Und es tritt nur bei manchen Gif-Dateien auf. Nicht bei allen.

      Ich werde mich später genauer damit beschäftigen (muss weg).


      Edit:

      Ich habe das Problem jetzt mehr oder weniger gefunden:
      Die PictureBox verwendet den ImageAnimator. Wenn man dem ein Bild zum Animieren gibt, dann schlängelt sich das hier durch:
      (Anstelle der Klasse Animator ist's halt ImageAnimator).
      Und beim Aufruf der API GdipGetPropertyItemSize() gibt's dann die Exception, wenn der Stream von Img geschlossen wurde.

      Das interessante ist, wie von der PictureBox das Bild geladen wird.
      Ausgedünnt auf das minimalste ergibt sich das hier:

      VB.NET-Quellcode

      1. Private Shadows Sub Load(ByVal Path As String)
      2. localImageStreamReader = New StreamReader(Path)
      3. Img = Image.FromStream(localImageStreamReader.BaseStream)
      4. Animator.Animate(Img, AddressOf AnimationChanged)
      5. End Sub

      Warum hier aber der Stream manchmal geschlossen wird, ist mir unklar.

      Ich habe mir die ImageAnimator-Klasse in IL-Spy angesehen und alles nötige nachgeschrieben.
      In den nächsten Tagen werde ich mir einen Wrapper schreiben und den im Programm verwenden. Bis da hin kann ich leider nichts am Problem ändern.
      Ich schlage vor, dass ihr einfach die .Net Framework 4.0 -Version verwendet (Das Update auf .Net Framework 4.0 ist mit LanguagePack gerade mal 50MB groß).
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Niko Ortner“ ()

      Ok.
      Version 2.0 ist fertig.

      @DiePod:
      Ich bin den Bug mit dem Gif-Bild umgangen, indem ich die ImageAnimator-Klasse des Frameworks grob nachgebaut habe und das Bild nicht mehr über PictureBox.Load(Path) lade, sondern nacheinander mit Image.SelectActiveFrame(...) die Frames auswähle und zeichnen lasse.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      Ich habe zwei weitere Kontextmenüeinträge eingebaut: "Nach links" und "Nach rechts". Mit denen kann man das Fenster temporär auf einen anderen Bildschirm verschieben. Unabhängig von der darunter ausgewählten Einstellung.
      Und ich habe geändert, dass beim ersten Laden eines Bildes das vorige Bild noch angezeigt wird, bis das neue Bild geladen wurde. Sonst bekommt man beim schnellen Durchscrollen noch einen epileptischen Anfall ^^
      Anmerkung: Die Version für das .Net Framework 4.0 hat eine zusätzliche Dll dabei: Resizer.dll
      In der befindet sich ein kleiner Helfer, der für die Skalierung zuständig ist. Ich habe das in eine Dll ausgelagert, weil ich diese Funktionalität auch in anderen Projekten benötige und nicht immer neu implementieren will. Bei der FW 2.0 - Version habe ich den Code einfach direkt reinkopiert, weil ich sonst die Dll auch für .Net Framework 2.0 kompilieren müsste.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      Ich habe ein paar Bugs behoben, die beim Löschen des Caches auftreten, wenn dem Programm der Arbeisspeicher ausgeht.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      Du könntest vielleicht eine Fehlerbehandlung in Betracht ziehen. Beim Öffnen mit defekten Bildern kommt eine Exception ^^
      Spoiler anzeigen
      Informationen über das Aufrufen von JIT-Debuggen
      anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

      ************** Ausnahmetext **************
      System.ArgumentException: Ungültiger Parameter.
      bei System.Drawing.Bitmap..ctor(String filename)
      @Gonger96: Werde ich machen. Ich hab hier noch ein Update mit diversen Bugfixes, die ich nicht mehr im Kopf habe, weil's schon etwas her ist.
      Danke jedenfalls fürs Testen.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      Ich habe einige kleinere Bugs gefixt.
      Die von Gonger96 in Post #15 erwähnte Exception fliegt jetzt nicht mehr dem User entgegen, sondern es wird eine Meldung links oben angezeigt.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils