forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   С# (http://forum.boolean.name/forumdisplay.php?f=128)
-   -   EnumWindows. Перехват окон, созданных другим процессом (http://forum.boolean.name/showthread.php?t=18958)

Reizel 20.02.2014 00:00

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

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

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

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

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

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

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

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

SBJoker 20.02.2014 00:08

Ответ: EnumWindows. Перехват окон, созданных другим процессом
 
Хороший вопрос, я думаю будь это возможно - не было бы смысла в изоляции пользователей. Если мы говорим о Windows Vista и новее, думаю что логично не допускать вмешательства в приложения другого пользователя.

Ответ же наверняка есть в MSDN

Dream 20.02.2014 00:38

Ответ: EnumWindows. Перехват окон, созданных другим процессом
 
ну может как вариант заделать системным сервисом чтобы запускался для всех пользывателей, может у них есть такой доступ


Часовой пояс GMT +4, время: 10:37.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot