![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Felan |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: 2 Всего: 7 |
Это уже я так сделал. В оригинале было // OldDescUser := OpenDesktop('default', 0, FALSE, MAXIMUM_ALLOWED);
Это понятно. Вот как его определить, в этом и вопрос. Не вкуриваю я великий смысл :( :( :(
У сервиса да, а у пользователя всегда Winsta0.
Это ты где вычитал? Я че-то про стол не нашел... или понял чего не так... Как я понял, что стол как раз може меняться, и будет это как раз тогда, когад используется "быстрое" переключение. У старого пользователя стрый рабочий стол остается, а у нового - новый. Как так? где написано? Я думал станция - стол - сессия... -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
||||||||
|
|||||||||
| Virtuals |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 4 Всего: 11 |
про оригинал я вкурсе, мы на одинаковых форумах сидим
id processa я описал как получить, осталось по ид процесса, выдернуть ид одного из потоков желательно с окнами... это не вычитал это сам проверил!!! У старого пользователя стрый рабочий стол остается, а у нового - новый. - я тоже так думал, а вот на тебе и не так оказалось
тоже методом напряжения моска, а как же тогда пользовательское приложение бродит со стола к столу+ может создавать новый стол... (в этом месте могу ошибатся, моск уже не варит.) ну и гулялка по столам Это сообщение отредактировал(а) Virtuals - 15.2.2008, 12:21 Присоединённый файл ( Кол-во скачиваний: 13 )
Create_Switch_Desktop.zip 8,81 Kb |
||||||
|
|||||||
| Felan |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: 2 Всего: 7 |
А нафиг он нужен, если и так у пользователя всегда winsta0\default? Можно сразу к нему цепляться и все.
Ну здорово, значит не надо за ними следить? В каком случае тогда происходит смена рабочего стола? Ну собственно так, что что они не являются вложенными объектами. Сессия это сессия, станция это станция, стол это стол. Программку посмотрел... только вот глаза она мне не раскрыла :(. Описание всех этих функций я в MSDN видел. Пойми меня правильно, я не ставлю под сомнения твои слова и выводы, просто я надеялся, что у тебя есть какие-нибудь статейки где описана теория взаимодействия всего этого дела... А что в MSDN как-то все обрывочно... Вобщем пока что у меня после MSDN одна каша и никакого стройного понимания :(. -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
||||
|
|||||
| Virtuals |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 4 Всего: 11 |
OpenInputDesktop Remarks The calling process must have an associated window station, either assigned by the system at process creation time or set by the SetProcessWindowStation function. и еще из помощи... Функция SetProcessWindowStation назначает станцию окна на процесс запроса. Это позволяет процесс к объектам(целям) доступа в станции окна типа рабочих столов, буфера вырезанного изображения, и глобальных атомов. Все последующие действия на станции окна используют права доступа, предоставленные hWinSta . а вот как мс реализовали смену пользователя без переключения столов, остается загадкой (стол нам нужен позарез, так как сообщения гуляют только в пределах стола!) но мне кажется что, самое реальное (да и самое простое) это подгружать в сессию пользователя приложение управляемое и контролируемои из сервиса (нужен реестр порльзователя, скорее всего для ActiveX)
может в терминальных клиентах? (возможности проверить нет) |
||||
|
|||||
| Felan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: 2 Всего: 7 |
Ну правильно. У пользователя станция всегда winsta0. После того как ассоциируешь процесс сервиса с ней, эта функция вернет активный пользовательский десктоп. Если честно, то нифига не понял... в оригинале можешь привести что ты хотел сказать? Я что хочу сказать, что нет иерархии между станцией и сессией. Т.е. как я это понял после копания в MSDN. Станция - это набор объектов отвечающих за безопастность, хранилище глобальных объектов (атому, токены и т.п... рабочие столы). Рабочий стол это глобальный объект для станции через который происходит взаимодействие с пользователем. Пользователь работает в сессии, которая начинается при авторизации/аутентификации и заканчивается при логофе. Т.о. сессия работает в пределах станции и может взаимодействовать с одним или несколькими рабочими столами. Это, кстати, подтверждается твоей прогой!. КОгда делаешь новый стол, то на нем все дублируется (в добавление к уже созданным приложениям) и все это функционирует под одним пользователем! Мда... Вот интересно, об этом почеловечески где-нибудь пишут?..
Ну это еще одни слой... который будет полностью дублировать работу сервиса... Зачем тогда он нужен? Тогда вообще проще без сервиса. Просто в автозагрузку засунул прогу и все. :( Вот это без сомнения... но как его подключить? Возможно. Но там не интерактивные рабочие столы. Интерактивный только тот, на котором UI запущен для текущего локального пользователя. -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
| Virtuals |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 4 Всего: 11 |
специально прога подгружает сама себя и смд+ слежение как смд закроется то возврат а сама прога для удобства скачков далее (представь что будет если создать стол, переключится на него и не дать на нем никаких инструментов просто это в моей реализации... в реале можно указать безопасность, посмотри описание на CreateDesktop ну не знай не знай режим когда у пользователя висит приложение, активно контролируемое сервисом очень интересное решение, весь код в сервисе а приложение только транслирует команды от сессии пользователя + сервис постоянно контролирует свое приложение на предмет блокировок разных (я имею ввиду не авторан дочернего приложения а рунас из сервиса) хотя это не самое элегантное решение (про реестр пользователя) вот он вроде как раз и грузится для сессии хотя не уверен но можно посмотреть... ЗЫ кстати есть несколько инструментов для исследований в этом плане стучи в асю Это сообщение отредактировал(а) Virtuals - 15.2.2008, 17:13 |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |