Dzisiejszy wpis będzie krótki. Dzisiaj poruszę dosyć ważny temat związany z tworzeniem dodatków COM do Office. Dzisiaj na tapetę wrzucamy zwalnianie obiektów COM.Co się stanie, gdy nie zwolnimy poprawnie zadeklarowanych obiektów? Najczęstszym objawem niepoprawnie zwolnionych obiektów jest problem z poprawnym zamkni...
Daj się poznać 2017 2820 dni, 22 godziny, 41 minut temu 43 źrodło rozwiń
Tworzymy dodatek COM do Outlook. Cześć! Dzisiaj postaram się przedstawić Wam, w jaki sposób zacząć swoją przygodę z tworzeniem dodatków COM do pakietu MS Office. Dodatek, który stworzymy docelowo będzie miał za zadanie przekazywanie otrzymanych maili do dalszej obsługi po stronie HoloLens. Będzie to jedna z aplikacj...
Daj się poznać 2017 2823 dni, 8 godzin, 16 minut temu 31 źrodło rozwiń
Praca z obiektami COM może być trudna i czasami frustrująca. Przykład:Worksheet sheet = excelApp.Worksheets.Open(...); // Jakaś logika. Odczytywanie lub modyfikacja arkusza itp.Marshal.ReleaseComObject(sheet); Marshal.ReleaseComObject(excelApp); O obiektach COM należy pamiętać, również po zakończeniu pracy z nimi – należy zwolnić wszelkie zasoby. Nie zawsze jest to proste i oczywiste. Powyższy kod spowoduje memory leak ponieważ Worksheets również musi zostać zwolniony. Metoda Open jest wywołana na ob...
Programowanie rozproszone 4440 dni, 5 godzin, 49 minut temu 124 źrodło rozwiń
Niedawno kolega opowiedział mi o jeszcze jednym przypadku kiedy opisane przeze mnie zachowanie konstruktora statycznego w środowiskach x86/x64 doprowadziło do kłopotów. Scenariusz był dość ciekawy, dlatego go opiszę na uproszczonym przykładzie. Zacznijmy od tego, że napisaliśmy zarządzany komponent COM. Komponent ten w konstruktorze statycznym czyta wartość jakiegoś parametru konfiguracyjnego z pliku i na tej podstawie coś robi. W poniższym przykładzie, żeby nie komplikować sprawy, po p...
autor: W dwóch poprzednich artykułach na temat zarządzanych komponentów COM+ pisałem, że instaluje się je przy użyciu narzędzia regsvcs.exe. Tak oczywiście jest, ale ostatnio ku swojemu zaskoczeniu zauważyłem, że jest to opcjonalne. Jeśli nie zainstalujemy takiego komponentu z poziomu konsoli (np.: regsvcs.exe MyComponent.dll) to zostanie on zainstalowany automatycznie przy pierwszym wywołaniu jego konstruktora. [assembly: ApplicationName("MyComponent")] [assembly: ApplicationActivation(...
autor:W tym poście wrócę do tematu aplikacji modelu COM+ napisanych w kodzie zarządzanym, który to poruszyłem w poprzednim artykule. Tym razem chciałbym zwrócić uwagę na problem wersjonowanie takich komponentów. Upraszczając, chodzi o różnicę pomiędzy katalogiem, z jakiego komponent został zainstalowany w systemie, a katalogiem, w którym znajduje się biblioteka z komponentem jakiej używa dana aplikacja. W szczególności mogą to być inne katalogi np.: c:\Install oraz c:\bin. W takim ...
ServicedComponent to klasa umożliwiająca tworzenie zarządzanych komponentów/klas, które mogą być użyte w aplikacjach COM+ oraz mogą korzystać z usług COM+. Jedną z takich usług jest na przykład pula obiektów, czyli coś podobnego do puli połączeń z tą różnicą, że możemy w niej umieścić instancje naszej własnej klasy. Aby stworzyć taką specjalną klasę należy wydziedziczyć ją ze wspomnianej klasy ServicedComponent. Do tej pory nie miałem okazji z niej korzystać, dlatego napotkałem ...
Jednym z kroków dodania rozszerzenia REST dla ESRI było rejestrowanie obiektów COM na komputerze, na którym ma być rozszerzenie zarejestrowane. Dodatkowo, wymagana jest rejestracja COM w ich własnym menadżerze obiektów/rozszerzeń. W tym celu należy stworzyć albo instalkę albo napisać porządny kawał kodu (60-100 linii) jako Console Application. I tu zaczynają się schody. Nasz kod rejestrujący dllkę w menadżerze ESRI, musi najpierw być zarejestrowany jako COM. Czyli musimy wywołać polecenie regasm dll /cod...
Każdy kto pisze bardziej zaawansowane projekty w języku VBA wie co to biblioteka zewnętrzna poszerzająca możliwości piszącego aplikację. Dodaje się je za pomocą referencji w projekcie lub też korzysta z plików widocznych w rejestrze Windows. W pewnym momencie dochodzimy do takiego momentu że sami chcielibyśmy utworzyć taką bibliotekę zawierającą nasze ulubione funkcje, jakieś elementy które chcemy ukryć przed wścibskimi oczami osób postronnych lub chcemy dodać funkcjonalności nigdzie indziej nie dostępn...
Napisanie programu do obsługi portu RS-232 za pomocą C# jest bardzo proste. :) Postaram się jednak napisać o tym kilka słów…