Показать сообщение отдельно
Старый 20.02.2014, 00:00   #1
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
EnumWindows. Перехват окон, созданных другим процессом

Привет, булка!
Смотри, какая есть задача: Есть win-сервис, который запущен от user1.

А я сижу под юзером user2.

Я запускаю какую-нибудь программу, у неё вылазит окно на рабочий стол. Программа имеет 1 основной процесс, он работает, естественно, от user2.

А мой сервис, работающий под user1 должен это окно обнаружить, и произвести с ним страшные махинации.

Я использую EnumWindows функцию из WinAPI. По-идее, она должна перечислить мне все окна, одно из которых будет как раз то самое окно.

но! не находит. Окно есть, а дебугер говорит, что нет его.

ока, я думал, может юзеру1 прав не дано, чтоб окна от user2 подсматривать. Написал тулзу WinForms, запустил её от имени user1 - прекрасно находит всё, что нужно.

Итак, вопрос: влияет ли на EnumWindows тот факт, что процесс запущен в неинтерактивной среде? И может ли он таки получить список окон, созданных процессами другого пользователя?
(Offline)
 
Ответить с цитированием