Omminięcie ShowModal w DLL bez ingerencji w niej i dodatkowego exe

0

Cześć,

używam Delphi XE2

Mój problem
Mam aplikację, która wywołuje DLL z formą w trybie ShowModal (podgląd wydruku). Chciałbym, aby było możliwe zminimalizowanie tego podglądu wydruku i dalsza praca na głównej aplikacji.

Odpada:

  • Ingerencja w DLL (np. usunięcie ShowModal) - ze względu na liczbę takich DLL (kilkaset, dość złożone oprogramowanie),
  • Zrobienie dodatkowej aplikacji (.exe) - ze względu na przekazywanie funkcji wraz z parametrami do DLL.

Nie odpada np. zrobienie dodatkowej DLL czy dowolna ingerencja w główną aplikację.

0

Tutaj autor, zarejestrowałem się :)

Tak wygląda nagłówek funkcji w głównej aplikacji wywołującej DLL z głównej aplikacji, tę funkcję też można dowolnie modyfikować.

function DLL_ShowXXX(a : Integer) : TModalResult;

Nie proszę o kod, będę wdzięczny za sam pomysł.

0

Jedyna możliwość jaką widzę to Ingerencja w DLL (np. usunięcie ShowModal).

Możesz spróbować wysłać do wszystkich okien w aplikacji EnableWindow(Okno.Handle, True); ale musiałbyś to zrobić w wątku, który startowałby PRZED pokazaniem okna modalnego, ale EnableWindow robił już PO pokazaniu okna modalnego.

0

@abrakadaber - dziękuję za odpowiedź ;) Niestety odpada opcja ingerencji w DLL. Jeśli nie wyjdzie mi sposób poniżej, to spróbuję Twojego sposobu z EnableWindow.

Testuję takie rozwiązanie:

  1. Główna aplikacja uruchamia nową DLL (nazwijmy ją "Launcher")
  2. Nowa DLL tworzy wątek, która wywołuje docelową DLL (podgląd wydruku)
  3. Po zamknięciu docelowej DLL (podglądu wydruku) wątek zamyka DLL Launcher.

Póki co działa dobrze ;)

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