| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > cскриншот из сервиса |
| Автор: artfully 17.11.2008, 00:34 |
| скажите возможно ли из сервиса сделать скриншот экрана пользователя который в данный момент работает под своей учетной записью.. если да то подскажите в какую сторону копать... |
| Автор: artfully 17.11.2008, 02:27 |
| только не предлогайте сделать его интерактивным... ведь тогда он под вистой работать не будет... а это уже оч плохо |
| Автор: ReInit 17.11.2008, 05:30 |
| копать в сторону OpenDesktop SetThreadDesktop |
| Автор: CompWorm 17.11.2008, 18:02 |
| а сервис разве не для всех активных учеток срабатывает? а в шедулер сапихнуть вашу прогу? |
| Автор: ReInit 17.11.2008, 20:46 |
| CompWorm, для всех, но у него другой рабочий стол |
| Автор: Virtuals 18.11.2008, 05:52 |
| ReInit, неее у него другая рабочая станция artfully, форум, любезно тебе подсказал, очень полезные ссылки внизу страници ЗЫ //я тащусь от плагина данного движка "А здесь смотрели?" |
| Автор: artfully 18.11.2008, 18:38 | ||||
если вы про эту http://forum.vingrad.ru/forum/topic-50907.html то тут все решатеся путем включения интерактивного режима... в висте это работать не будет.. а мне нужно что бы и там работало... (кстати я об этом уже упомянал) to ReInit: прошу прощения но не могли бы вы пока зать как ими пользоваться.. просто я пока так и не свомог понять как соединить воедино функцию снимка экрана и OpenDesktop SetThreadDesktop снимок экрана делается по примеру из DRKB
|
| Автор: Virtuals 18.11.2008, 21:53 |
| artfully, пожалусто прочтите все ссылки внизу страници, и попробуйте осмыслить чем отличается сервис с галкой "интерактивный" от сервиса без галки //зы просто легче потом дать обьяснение зызы имхо неохота даватьготовое, главное показать путь |
| Автор: artfully 18.11.2008, 23:31 |
| да я понимаю что если сервис интерактивный то у него есть возможность так сказать общаться с пользователем... это все хорошо из под ХР ... но как же тогда в Висте сделать все тожесамое что и в ХР , ведь, повторюсь, интерактивный сервис в висте не работает. И еще, чтобы лучше была понятна сама ситуация обьясню подробнее что за программу я пишу. Это программа которая делает через хзаданное время скрин экрана и отсылает его пользователю... (примитивное подобие рабмина). программу я написал и решил переделать ее в сервис по тому как она должа отсылать скрины рабочих столов вне зависимости от того какой пользователь сейчвас работает. Если же реализовывать это как обычную программу то возможна следующая ситуация: Пользователь А1 зашел в свою учетную запись и программи П1 запустилась , открыла порт 123 и начала транслировать что пользователь делает в данную минуту. потом пользователь СМЕНИЛ учетную запись (главное здесть то что перая учетная запись продолжает работать) , тут запустилась вторая копия программы ... НО теперь она уже не может открыть порт 123 по тому что по нему уже идет трансляция рабочего стола старой учетной записи.... Вот по этому я решил переделать прогу в сервис чтобы она работала вне зависимости от учетной записи.. но теперь возникает проблемма как сделать так чтобы этот сервис работал также и в висте!!!!!! |
| Автор: artfully 19.11.2008, 00:14 |
| кстати может кто обресует какая картина обстоит в висте... там теперь сервис вообще никак не сможет связаться с пользователем или там просто какие то другие механизмы взаимодействия!!! |
| Автор: Virtuals 19.11.2008, 06:43 | ||
artfully,
интерактивный сервис отличается от неинтерактивного... неинтерактивный= станция - "блаблабла" (короче набор случайных символов) стол - "default" интерактивный= станция - "WinSta0" стол - "default" /обычно для пользователя стол - "winlogon" /для винлогона, ну тот стол где стрл альт дел жмеш и вводиш логин пароль соответственно чтобы процесс стал "интерактивным" SetProcessWindowStation и SetThreadDesktop. если ломимся к пользоватилю, -то стол - "default", если на экран входа в систему то стол - "winlogon" ЗЫ ну а если не хватает терпения или еще чего то может просто CreateProcess снимокэкрана.ехе с параметром lpDesktop - WinSta0\default |