Witam. Piszę obecnie pewien program w C# (Visual C# 2005, .NET Framework 2.0) i potrzebuję zrobić coś takiego, żeby główne okno tego programu było oknem podrzędnym innego, już otwartego okna w systemie.
Przypuszczam że musi istnieć jakiś sposób zrobienia tego, ale w środowisku .NET jestem raczej świeży. Orientuję się za to trochę lepiej w WinAPI i w 'czystym' C++ udało mi się osiągnąć zamierzony efekt w następujący sposób:
HWND rodzic = FindWindow(0, "Menedżer zadań Windows");
if (!rodzic) MessageBox(0,"Nie znaleziono okna Menedżera",0,0);
hwnd = CreateWindowEx (
0,
szClassName,
"WindowsApp",
WS_VISIBLE | WS_OVERLAPPEDWINDOW,
10,
10,
400,
320,
rodzic, // Jako okno-rodzic podaję wcześniej uzyskany uchwyt (lub 0 w przypadku błędu)
NULL,
NULL,
NULL
);
Znajdujemy HWND danego okna (dla testu podłączam się do Menedżera zadań) i podajemy ten uchwyt jako okno-rodzic przy wywołaniu CreateWindowEx, proste. No tylko że w C# nie ma ani CreateWindowEx, ani HWND, więc trzeba to jakoś obejść.
Czy ktoś może wie jak to uczynić w C#? Najlepiej żeby dało się to zrobić za pomocą metod .NET, ale rozwiązaniem w WinAPI też nie pogardzę :) Znalazłem jedną funkcję WinAPI: SetParent, tylko że ona z tego mojego okna robi kontrolkę i umieszcza ją wewnątrz nowego rodzica, a trochę nie o to mi chodzi.. :/
Z góry dzięki za wszelką pomoc!