Получить снимок экрана при блокировании WinXP
Вопрос касается исключительно настроек WinXP SP2.
Есть программа на Delphi 7, которая при запуске должна сохранить образ экрана в файле c:\screen.bmp и завершиться. Фрагмент программы: procedure Tfm_Main.FormActivate(Sender: TObject); var bmp : TBitmap ; begin // сохранение образа экрана bmp := TBitmap.Create ; try bmp.Width := Screen.Width ; bmp.Height := Screen.Height ; BitBlt ( bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, GetDC ( GetDesktopWindow ), 0, 0, SRCCopy ) ; bmp.SaveToFile ( 'c:\screen.bmp' ) ; finally end ; bmp.Free ; close ; end; Запуск циклически производится другой программой после блокирования экрана WinXP командами "Пуск->Выход из системы->Смена пользователя". В результате выполнения программы файл c:\screen.bmp содержит совершенно пустой белый прямоугольник. Если экран не блокировать, то файл c:\screen.bmp будет содержать правильное актуальное изображение экрана. Какие настройки WinXP надо поменять, чтобы после блокирования экрана в файле c:\screen.bmp было бы записано актуальное изображение экрана, а не белый прямоугольник? |
Цитата:
|
Хочу получать образ экрана в виде bmp-файла после блокирования WinXP.
Виртуальные машины в этом точно не помогут. |
Цитата:
Цитата:
|
Расскажу, для чего всё это надо.
Есть программа на некотором скриптовом языке (к примеру, на AutoIt3). Этот скрипт должен выполняться в течении всего дня под одним пользователем, а я хотел бы работать на том же ПК под другим пользователем. Для вылавливания разных ошибочных ситуаций в скрипте приходится не только вести протоколирование в виде текстового файла, но и сохранять в определённые моменты образ экрана в графических файлах вида <date>-<time>.bmp. Под "образом экрана" я понимаю картинку, которую обычно получают после нажатия клавиши "Print Screen" и вставки данных из буфера в графический редактор вроде Paint. Последовательность таких картинок я и хотел бы иметь, чтобы отслеживать выполнение скрипта. Без блокирования экрана, без смены пользователя, программа на Delphi, время от времени запускаемая из скрипта, вполне исправно формирует такой видео-протокол. Если в скрипте эмулировать нажатие "Print Screen", то при блокированном экране это нажатие никакой информации в буфер не заносит и в графическом редакторе пункт "Вставить" остаётся в неактивном состоянии. Возможно, если запустить скрипт в WinXP на виртуальной машине и свернуть окно виртуальной машины, то видео-протокол будет формироваться. Но такой подход меня не устроит, т.к. значительно усложняется решение других задач. Т.е. вопрос можно уточнить - какие настройки WinXP надо поменять, чтобы получить файл с образом экрана блокированной сессии после смены пользователя и отслеживать таким способом изменения на экране в этой сессии? |
Цитата:
|
Цитата:
К примеру, скрипт запускаем от имени требуемого пользователя Код:
runas /user:YourCompName\User4Scripts StartScript.exe при этом находимся в сесии требуемого для работы пользователя. |
Время: 19:31. |
Время: 19:31.
© OSzone.net 2001-