Jul 212011
 

Was tun, wenn die Frau, die mal die Schwiegermutter werden soll, fragt, ob man es nicht vereinfachen könnte, die vielen Fotos aus den E-Mails in ihren Bilder-Ordner zu verfrachten?

Zuerst hab ich in Outlook nach der Funktion gesucht, die auf Knopfdruck alle Anhänge einer E-Mail in einem auszuwählenden Ordner abspeichert und musste feststellen: es gibt sie nicht oder sie ist verdammt gut versteckt. Außerdem ist ja auch lästig, DEN Ordner (ja, immer der selbe) immer wieder neu auszuwählen und alle Mails einzeln abzuarbeiten, also mal schnell einen Blick riskiert, ob man dafür nicht ein schnelles Makro zaubern könnte.

Et voilà, hier ist es:

Sub UnterFotosSpeichern()
  Dim Ordnername As String   
  Dim objMail As MailItem    
  On Error Resume Next   
  Ordnername = "zB ein absoluter Pfad zum Ordner"   
  For Each objMail In Application.ActiveExplorer.Selection     
    For Each attachedFile In objMail.Attachments        
      attachedFile.SaveAsFile Ordnername & "\" & attachedFile.FileName     
    Next attachedFile    
  Next objMail  
End Sub 

Der Clou dabei: es können gleich mehrere Mail markiert werden und alle Attachments werden “abgesaugt”.

Alternativ könnte man natürlich einen beliebigen Ordner auswählen lassen, oder einen anhand der Datei-Datumsinformation einen Unterordner oder die Mails hinterher noch löschen oder verschieben usw… aber das war hier gerade nicht beabsichtigt.

Und das ganze ging echt schnell, für solche kleinen Nettigkeiten ist VB zugegebenermaßen echt brauchbar, auch wenn mir C# wesentlich besser von der Hand geht.

 


*Sorry, es war stärker als ich. Sollte meinen: Hoppla, da hab ich doch nach langer Zeit nochmal einen ungewollten Ausflug in die Welt von Visual Basic (VB) for Applications gemacht.

Apr 212011
 

Wie kürzlich erst gesagt gibt’s etliche Möglichkeiten, das INPC zu handhaben. Ich habe jetzt einen neuen Favoriten:
T4 Code Snippets

Vorteile: Der Code muss nicht manuell geschrieben werden, kann auch zentral refactored werden, ist aber schon zur Compilezeit vorhanden und auch sichtbar. UND: die Properties inkl. Boilerplate-Code landen in einem eigenen CodeFile und verwässern nicht den Teil, wo die komplexeren Sachen passieren.
Ach ja, und noch einer: Die Snippets liegen im Projekt, damit auch im CVS und sind immer für das ganze Team sichtbar und verfügbar, auch bei abweichender IDE-Config.

Nachteil: Evtl. minimal längere Compilezeit, spezielle Templates, z.,b. um die Zusatzfeatures des NotifyPropertyWeaver nachzubilden muss man erst noch erstellen.

Außerdem sehr schick: die verkürzte Grid!Syntax für Row-/ColumnDefinition.

Und für die T4-Snippets gibt es sicher noch weitere gute Anwendungen. Z.B. Standardvalidierung mit IDataErrorInfo, Pflichtfelder, Min/Max-Grenzen etc.

Apr 152011
 

WPF-DataBinding rocks! Schön ist auch, dass es sowohl mit den (relativ neuen) DependencyProperties als auch mit den guten alten CLR-Properties (POCOs = Plain old CLR-Objects) gut harmoniert, wenn man denn INotifyPropertyChanged aus dem ComponentModel implementiert. Das ist auch nicht schwierig, sorgt aber immer wieder für Diskussionen, wenn es darum geht, wie man am besten MagicStrings […]

Feb 232011
 

Heute schon die int.MaxValue-Grenze übertreten? Für fast jeden kommt der Moment irgendwann, an dem int = Int32 nicht mehr ausreicht und auch ein Unsigned Int 64 knapp werden könnte. Klassische Beispiele: ewig hochgezählte Unique-IDs oder Comparer, die Strings numerisch sortieren sollen. Normalerweise kein Problem, aber es ist schwer zu garantieren, dass die Grenzen tatsächlich eingehalten […]

Dez 082010
 

…vielleicht eher für’s nächste Jahr interessant, obwohl der Advent ja noch ein paar Türchen bereithält: Ich habe eine kleine Adventskalender-Anwendung gebaut, die ich mit Fotos von meinem Kleinen an dessen Großeltern verteilt habe. Was man davon abgreifen kann? Beispielanwendung mit MVVM (MVVM-Lite Toolkit) – Aber Achtung, an 2-3 Stellen hab ich durchaus mal die Quick’n’Dirty-Lösung […]

Aug 312010
 

Bei meinen ersten Gehversuchen mit dem Entity Framework bin ich natürlich gleich über die erste Hürde gestolpert: Da ich weder mit Kanonen auf Spatzen schießen wollte, noch externe Libs=Fehlerquellen einbinden wollte, startete ich mit dem MS SQL Server in der Compact Edition. Soweit so gut, dank EF gelang die DB-Erstellung recht mühelos direkt aus VS2010 […]

Jun 132010
 

Einige echt nützliche Features für VisualStudio können mit diesen AddIns (von Microsoft selbst veröffentlicht) nachgerüstet werden: PowerCommands for VisualStudio 2010 (gabs auch schon für 2008: PowerCommands for Visual Studio 2008) Visual Studio 2010 Pro Power Tools Eine Liste mit noch viel mehr Productivity-Steigerungen kann man z.B. bei Scott Hanselman lesen.

 Posted by at 00:28
Jun 122010
 
Continuous Integration (CI) mit TeamCity, NAnt und SVN

Jeder Entwickler kennt sicherlich das Problem, dass seine eigenen Tests häufig nicht aussagekräftig genug sind. Der 100% identische Programmcode kompiliert bei Entwickler A, nicht aber bei Entwickler B („wirklich 100% gleich?“ „Ja, klar.“ „Auch Komponente X“ „Sicher“ „Und du hast die selbe Version von Lib Y?“ „Uhoh…“). Noch schlimmer: Bei beiden kompiliert der Code, aber […]

 Posted by at 21:21
Jun 102010
 
ClickOnce auf Synology DiskStation

ClickOnce ist ein recht komfortables System, um Software zu verteilen – insbesondere das Auto-Update ist absolut genial … wenn es funktioniert. Das wiederum ist noch relativ einfach, wenn man auch einen MS-IIS-WebServer  verwendet – nicht wenige verwenden aber einen Apache- oder andere Server und ändern wollen wir natürlich alle nichts, zumindest nicht ohne triftige Gründe. […]

Apr 232009
 

Sehr schöne, und vor allem gr0ße, Auswahl von LINQ-Samples. IMHO der schnellere Weg, LINQ zu lernen, als die Dokumentation der vielen einzelnen Funktionen. 101 LINQ Samples

n/a