Ich baue eine App, die mit einer anderen App mainWindowhandle Informationen über den Fensterzustand sammelt. Ich habe kein Problem, Informationen über untergeordnete Fenster zu sammeln, aber ich kann nicht auf die anderen geöffneten Fenster einer Anwendung oder sogar auf die Menüs zugreifen. Gibt es eine Möglichkeit, alle Fenstergriffe einer Anwendung zu erhalten?Die Fenstergriffe der Anwendung holen
Antwort
Sie könnten tun, was Process.MainWindowHandle
scheint zu tun: Verwenden Sie P/Invoke, um die EnumWindows
-Funktion aufzurufen, die eine Callback-Methode für jedes Top-Level-Fenster im System aufruft.
Rufen Sie in Ihrem Rückruf GetWindowThreadProcessId
, und vergleichen Sie die Prozess-ID des Fensters mit Process.Id
; Wenn die Prozess-IDs übereinstimmen, fügen Sie das Fenster-Handle zu einer Liste hinzu.
Zunächst müssen Sie das Fensterhandle des Hauptfensters der Anwendung aufrufen.
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
IntPtr hWnd = (IntPtr)FindWindow(windowName, null);
Dann können Sie diesen Griff verwenden, um alle childwindows zu erhalten:
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EnumChildWindows(IntPtr hwndParent, EnumWindowsProc lpEnumFunc, IntPtr lParam);
private List<IntPtr> GetChildWindows(IntPtr parent)
{
List<IntPtr> result = new List<IntPtr>();
GCHandle listHandle = GCHandle.Alloc(result);
try
{
EnumWindowProc childProc = new EnumWindowProc(EnumWindow);
EnumChildWindows(parent, childProc, GCHandle.ToIntPtr(listHandle));
}
finally
{
if (listHandle.IsAllocated)
listHandle.Free();
}
return result;
}
Mez das Problem isn‘ t bekommen kind windows, ich kann das leicht tun, was ich nicht tun kann, ist zu anderen windows neben mainWindow und seine childs ... – user361526
Dies funktioniert für jedes Fenster, auch für Fenster, die nicht zu der eigenen Anwendung gehören. Entschuldigung, wenn ich deine Frage missverstanden habe. – Mez
Woher kommt 'EnumWindowProc'? –
- 1. Android Kontakte in die Anwendung holen
- 2. Holen Sie sich die Google ID zum Herunterladen der Anwendung
- 3. Ausgabe in Facebook Freundesliste nach der Anwendung holen beenden ios9
- 4. Objective-C: Holen Sie sich Menüinformationen aus der externen Anwendung
- 5. Zend Framework: Holen Bootstrap-Ressource von überall in der Anwendung
- 6. Holen Größe von UIView nach CGAffineTransform Anwendung
- 7. Holen Sie die ID der Registerkarte (div)
- 8. Golang: Holen Sie die Art der Scheibe
- 9. Holen Sie die Primärschlüsselliste der dynamoDB
- 10. Holen Sie sich die Liste der geöffneten Fenster C#
- 11. Holen Sie sich alle Fenster für einen Prozess
- 12. Anwendungsfenster aus einer .NET App holen und verschieben?
- 13. Holen Sie die höchste Punktzahl und die Anzahl der Siege
- 14. Holen Sie die Zeilennummer der Ausnahme der ersten Chance
- 15. Holen Sie sich die Liste der Kindersteuerungen in einer Gruppenbox
- 16. Die Anwendung der Reihenfolge der SVG
- 17. Holen Sie die Umgebungsvariable Adresse
- 18. Das Holen mehrerer Zeilen von MYSQL innerhalb einer glänzenden Anwendung
- 19. Holen DataRow von bearbeitbaren DataGridView in Windows Forms-Anwendung
- 20. So holen Sie DTMF-Töne in Android-Anwendung
- 21. Holen Sie sich die BlackBerry-Gerätenummer
- 22. Holen Sie sich die Subdomain als Parameter
- 23. Holen Sie die Dateierweiterung (Basisname?)
- 24. Byte von der Speicheradresse holen?
- 25. Bild von der Kamera holen
- 26. Holen von EntityManager im Frühjahr Boot-Daten Rest-Anwendung
- 27. Holen Sie Web-Anwendung root von Spring Controller
- 28. Holen Sie sich die Anzahl der Checkboxen in Javascript
- 29. Holen Sie sich die Ansicht von der Aktionsleiste Menüpunkt
- 30. Holen Sie sich die rechte Seite der Gleichung
prüfen diese Arbeitslösung aus: http://stackoverflow.com/a/28055461/1274092 –