Dołącz okno formularza do innego okna w C #
Chcę dołączyć formularz do innego okna (innego procesu). Próbuję to zrobić za pomocą
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
setParentWindow(myWindowHwnd, newParentHwnd);
Czyniąc to, moja forma zostaje przywiązana, ale równieżniewidoczny. Pytanie„Dołącz okno…” rozwiązuje ten problem dla okna WPF, w zasadzie za pomocą
HwndSourceParameters parameters = new HwndSourceParameters();
...
HwndSource src = new HwndSource(parameters);
Próbowałem przenieść to do mojego formularza, ale nie mogę tego zrobić (np. Jak sobie poradzićsrc.RootVisual = (Visual)window.Content;
? ->Kompletne źródło).
Kolejny komentarz mówi, muszę zmodyfikować styl okien:
Ze względu na zgodność SetParent nie modyfikuje stylów okna WS_CHILD lub WS_POPUP okna, którego rodzic jest zmieniany. Dlatego, jeśli hWndNewParent ma wartość NULL, należy również wyczyścić bit WS_CHILD i ustawić styl WS_POPUP po wywołaniu SetParent. I odwrotnie, jeśli hWndNewParent nie jest NULL, a okno było wcześniej dzieckiem pulpitu, należy wyczyścić styl WS_POPUP i ustawić styl WS_CHILD przed wywołaniem SetParent.
Tutaj brakuje mi odpowiedniego API, czy mogę to zrobić bezpośrednio z C # lub użyć innegoDllImport
jeszcze raz?
Dobry lub zły - Win32 API SetParent () między różnymi procesami odradza dołączanie okien w różnych procesach, ale przynajmniej chcę spróbować.
Pytanie:
Co muszę zrobić, aby okno formularza było widoczne? Jeśli podejście zWS_Child
jest poprawny, jak bym to ustawił? Albo jestPodejście WPF sposób na to, ale w jaki sposób zastosowałbym go do formularza systemu Windows?
- Wyniki (dodane później) -
Zmodyfikuj styl okien innej aplikacji za pomocą winAPI pokazuje, jak zmodyfikować styl z C # / PInvoke
Znajdź wszystkostyle okien tutaj, składnia C # na dole.
- Ustalenia z powodu dyskusji z Alanem -
Uruchomiłem mój program na Win XP do kontroli krzyżowej (zobacz odpowiedź Alana poniżej i komentarze). Przynajmniej teraz coś widzę. Ponieważ dodałem współrzędne w przykładach Alana, moje okno świeci teraz w notatniku, gdy przesuwa się po drugim oknie w lewym górnym rogu. Nadal możesz zobaczyć tekst wpisany w notatniku jako nakładkę. Under Win 7 (32) Nic nie widzę.
Teraz muszę się dowiedzieć, czy można to zapisać w sposób stabilny, pojawiając się również w Win 7.Niemniej jednak nadal nie mogę klikać żadnych przycisków na moim formularzu, trzeba też je rozwiązać.