Zdarzenia, a komendy we wzorcu MVVM

Jeżeli zaczynasz swoją przygodę ze wzorcem MVVM to tak samo, jak ja prędzej czy później napotkasz na problem z obsługą zdarzeń. Teoretycznie powinny zastąpić nam je tzw. komendy. Jednak nie wszystkie kontrolki je obsługują(np. ComboBox) i nie dla wszystkich zdarzeń można je „ot, tak” wywołać. Jak zatem sobie z tym poradzić? Oczywiście trzeba powiązać dane zdarzenie z komendą 😉

Czytaj dalej

Odczytywanie informacji o zasobach komputera – WMI i C#

Zastanawialiście się kiedyś, jak dostać się do szczegółowych informacji na temat komputera przy użyciu .NET’a? Do tego celu służy WMI  (Windows Management Instrumentation). Czym konkretnie jest WMI? Jak mówi polska Wikipedia, jest to: „zestaw protokołów i rozszerzeń systemu Windows umożliwiających zarządzanie i dostęp do zasobów komputera, takich jak adaptery sieciowe, aktualnie otwarte programy, lista procesów, odczyty z wbudowanych czujników temperatury, odczytów woltomierzy itp.”. Co ciekawe można korzystać z tego mechanizmu także zdalnie. Dostęp do WMI z poziomu .NET’a zapewnia nam przestrzeń nazw System.Management. Niezbędne, więc będzie dodanie do niej referencji w projekcie. Z dobrodziejstw WMI możemy korzystać nie tylko poprzez C#. Możliwe jest korzystanie z tego mechanizmu również z poziomu Visual Basica .NET, VBScript, F#, PowerShell’a, C++ i pewnie także z innych 😉

Czytaj dalej

Dekompilacja aplikacji pisanych w .NET

Myślę, że o czymś takim jak dekompilacja wiele osób już słyszało. Jednak na wstępie przypomnę jeszcze czym właściwie ona jest. Jak wskazuje sama nazwa, jest to proces odwrotny do procesu kompilacji programu. Polega ona, więc na zamianie kodu maszynowego z powrotem na język wyższego poziomu. Należy przy tym zaznaczyć, że dekompiler podczas dekompilacji nie odtwarza oryginalnego kodu, jaki istniał przed kompilacją. Jednak odtwarza kod o takim samym działaniu jak ten źródłowy. W przypadku C# dekompilacja jest wyjątkowo prosta. Głównie z tego powodu, że programy nie są kompilowane bezpośrednio do kodu maszynowego, tylko do tzw. Common Intermediate Language (CLI). Kod ten zamieniany jest na kod maszynowy dopiero po uruchomieniu aplikacji na przeznaczonym do tego komputerze. Zapewnia to lepszą wydajność, oraz przenośność kompilowanych aplikacji. Jakie są tego konsekwencje? Takie, że właściwie każdy może odtworzyć oryginalny kod naszego programu, posiadając jedynie plik wykonywalny *.exe – a czasami możemy tego nie chcieć 😉

Czytaj dalej

Ustawienia aplikacji w C#

Wszystkie bardziej rozbudowane aplikacje mają to do siebie, że przechowują wprowadzone przez użytkownika dane. Chyba nikt nie wyobraża sobie ustawiania swoich indywidualnych preferencji np. w przeglądarce internetowej, czy w grach po każdym ich restarcie. Byłoby to bardzo niewygodne i denerwujące. Rozwiązać problem zapisu ustawień aplikacji można na różne sposoby. Po co jednak się trudzić, skoro .NET daje nam to „za darmo” 😉

Czytaj dalej