Нужно в .NET приложении делать некоторые вещи при создании/закрытии "чужих" окон. Должно работать на основных версиях Windows — от XP и выше
Из дот нета напрямую нельзя устанавливать глобальные хуки для получения соответсвующих событий, нужно выносить эти вызовы в стороние неуправляемые библиотеки.
Я попробовал использовать "GlobalCbtHook.dll" из демо-проекта на codeproject:
http://www.codeproject.com/Articles/18638/Using-Window-Messages-to-Implement-Global-System-H (Using Window Messages to Implement Global System Hooks in C#)
На XP работает, но на Win8 уже нет. Разбираться с "с-кодом" большого желания нет, хотелось бы уложиться в рамки управляемого кода.
Где то на одном форуме вычитал что для этого можно использовать WMI, подобно этому посту:
http://weblogs.asp.net/whaggard/archive/2006/02/11/438006.aspx (Using WMI to monitor process creation, deletion and modification in .NET)
Но здесь можно наблюдать за создание процессов, а мне нужны окна. Может быть даже получится обойтись лишь родительскими, те что в менеджере задач как приложения определяются. Можно ли их из процессов отфильтровать?
Может быть есть другие способы?