Potrzebuję przechwycić konkretne okna procesu innej firmy. Mogę znaleźć uchwyt okna głównego jako Process.MainWindowHandle, ale co mogę użyć do wyświetlenia innych okien?Jak wyliczyć wszystkie okna w procesie?
Używam C#/.NET
Potrzebuję przechwycić konkretne okna procesu innej firmy. Mogę znaleźć uchwyt okna głównego jako Process.MainWindowHandle, ale co mogę użyć do wyświetlenia innych okien?Jak wyliczyć wszystkie okna w procesie?
Używam C#/.NET
3rd party aplikacja uruchomiła inne okna nie jak okien potomnych.
Możliwe jest sprawdzenie, jaka jest struktura za pomocą narzędzia Spy ++ dołączonego do programu Visual Studio.
Po tym, byłem w stanie znaleźć niezbędne okna przy użyciu funkcji FindWindowEx korzystając WindowClassName (zaczerpnięte z Spy ++): lastWindows = FindWindowEx (IntPtr.Zero, lastWindows, m.WindowClassName, null);
Funkcja EnumChildWindows może pomóc. Okna dzieci mogą również mieć dzieci i tak dalej.
Istnieje również GetWindow i EnumThreadWindows
Kolejny post tutaj z trochę więcej szczegółów: Get handles to all windows of a process
Użyj API Win32 EnumWindows (a jeśli chcesz EnumChildWindows)
[DllImport("user32.dll", CharSet=CharSet.Auto, SetLastError=true)]
public static extern bool EnumWindows(EnumThreadWindowsCallback callback, IntPtr extraData);
Następnie sprawdzić, które przetwarza każde okno należy do za pomocą API Win32 GetWindowThreadProcessId
[DllImport("user32.dll", CharSet=CharSet.Auto, SetLastError=true)]
public static extern int GetWindowThreadProcessId(HandleRef handle, out int processId);
Dzięki za tą nazwą - będę zamknąć pytanie, kiedy problem zostanie rozwiązany – st78