Wątki i biblioteki DLL

0

Witam wszystkich,

Mam nastepujący problem do rozwiązania: Należy połączyć dwie oddzielne obecnie aplikacje (A i B) napisane w Delphi w jeden program, przy czym w dalszym ciągu każda z nich musi zachować swoją autonomię a integracja ma na celu umożliwienie komunikacji między nimi. Dla przykładu aplikacja A gromadzi dane opisujące parametry techniczne urządzenia, natomiast aplikacja B jest typu CAD i służy do graficznej prezentacji urządzenia. Chodzi o to, aby po wskazaniu w aplikacji A urządzenia (lub jego części), aplikacja B pokazała to urządzenie i vice-versa.
Każda z aplikacji tworzona jest przez inny zespół programistów stąd chęć zamienienia ich na biblioteki DLL, które wywoływane byłyby z menu głownego zintegrowanej aplikacji. Temat integracji jest bardziej złożony, tutaj poruszam jedynie fragment.
W związku z powyższym każdą z bibliotek chciałbym uruchomić w odrębnym wątku. W jaki sposób należy prawidłowo podejść do tego tematu ?
Moje obecne rozwiązanie polega na tym, że w każdej z bibliotek wprowadzam funkcje: Otworz, PokazObiekt(Dane_rec), WyslijDane(Dane_rec) z listą parametrów. Następnie w aplikacji głównej tworzę wątki dla każdej z bibliotek DLL wołając procedurę Otworz, ktora tworzy głowne Menu podaplikacji. Ponadto poprzez TTimer z interwałem 500ms odczytuję procedurą WyslijDane zawartość rekordu Dane_rec z każdego z uruchomionych modułów DLL. Jeżeli stwierdzam zmiane w odczytanych danych w stosunku do poprzedniego czytania, to wywoluję procedurę PokazObiekt z nowymi wartościami na pozostałych modułach DLL o ile użytkownik, nie zmienia danych.
I tutaj jest moje drugie pytanie. Czy to jest właściwa technologia? Bo takie rozwiązanie jest raczej naleciałościa z Pascala, myślę że w Windows inaczej się to obsługuje, ale nie mam doświadczenia w temacie.
Kolejny problem polega na tym, w jaki sposób przywrócić widoczność ostatniego okna widocznego w ramach danego wątku. Chodzi o sytuacje taką, że będąc w wątku aplikacji A, uzyskując podgląd obiektu w aplikacji B, aplikacja B powoduje zasłonięcie okna aplikacji A. Zarówno okna w A i B są budowane jako modalne i wyświetlane dynamicznie. Z tym, że okno głowne danego wątka tworzone jest poprzez Create(NIL), a nie poprzez Create(Application) co pozwala na niezależnośc okien wątków w stosunku do głównego okna aplikacji. Jak ten problem rozwiązać ?

z góry dziękuję
Michal

0
Michal_ napisał(a)

Mam nastepujący problem do rozwiązania: Należy połączyć dwie oddzielne obecnie aplikacje (A i B) napisane w Delphi w jeden program, przy czym w dalszym ciągu każda z nich musi zachować swoją autonomię [...] stąd chęć zamienienia ich na biblioteki DLL

Biblioteka DLL to nie jest aplikacja :] Interprocess Communications <--- tu znajdziesz coś na temat komunikacji między procesami (aplikacjami).

1 użytkowników online, w tym zalogowanych: 0, gości: 1