Chciałabym, aby MessageBox nie wchodził ponad inne aplikacje

Chciałabym, aby MessageBox nie wchodził ponad inne aplikacje
aurel
  • Rejestracja: dni
  • Ostatnio: dni
0

Mam dodatek do Worda (VSTO), który wykorzystuje MVVM Light. Wyświetlam customowe MessageBoxy zrobione w WPF.
Niektóre MessageBoxy muszą być wyświetlone modalnie i nad wszystkimi innymi okienkami pochodzącymi z mojego dodatku. Jednocześnie chciałabym, aby inne okienka (spoza Worda) mogły ten MessageBox normalnie zasłonić. Niestety obecnie jest tak, że jak MessageBox jest na wierzchu, to jest na wierzchu absolutnie wszystkiego (choć Word i okienka w Wordzie są zasłonięte, co daje dziwny efekt).

StackOverflow podpowiada, by ustawić Ownera na okienku MessageBoxa. Niestety nie dało to u mnie żadnego efektu. Próbowałam ustawić jako Ownera okienko Worda (dodatek Wordowy nie ma własnego "głównego okienka").

Poniżej kod - MessageBox w tym wypadku to nazwa klasy okienka WPF.

Kopiuj
var messageBox = new MessageBox();
messageBox.Caption = caption;            
messageBox.Message = message;

var handle = NativeMethods.GetForegroundWindow();
var wih = new WindowInteropHelper(messageBox);
wih.Owner = handle;
messageBox.ShowDialog();            
return messageBox.Result;

neves
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1114
0

A dobrze ten uchwyt okna pobierasz ?
Ja w aplikacji która działa też jako addin, ale do innego programu nie M$, uchwyt pobieram w ten sposób:

Kopiuj
wih.Owner = Process.GetCurrentProcess().MainWindowHandle;

i smiga

aurel
  • Rejestracja: dni
  • Ostatnio: dni
0

Niestety działa to tak samo, choć faktycznie chwyta inne okienko (inne okienko mojego dodatku, podczas gdy GetForegroundWindow zwracało okienko Worda - lub Visual Studio, jeśli pod debuggerem ;)).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.