Показать полную графическую версию : Получить снимок экрана при блокировании WinXP
gold_cat
09-11-2007, 21:30
Вопрос касается исключительно настроек 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 было бы записано актуальное изображение экрана, а не белый прямоугольник?
Запуск циклически производится другой программой после блокирования экрана WinXP командами "Пуск->Выход из системы->Смена пользователя". »
А что вы снять-то хотите? Может вам Виртуальные машины (http://oszone.net/2757) проще снимать?
gold_cat
10-11-2007, 09:24
Хочу получать образ экрана в виде bmp-файла после блокирования WinXP.
Виртуальные машины в этом точно не помогут.
Виртуальные машины в этом точно не помогут. »Меня несколько смущает категоричность ваших суждений.
Хочу получать образ экрана в виде bmp-файла после блокирования WinXP. »
Простите, что такое "образ экрана"? Я понял так, что это снимок экрана, скриншот имеется в виду. В этом случае виртуальные машины ваши лучшие друзья. Для примера приводится скриншот заблокированной Windows Vista.
http://funkyimg.com/t/68451locked_workstation.png (http://funkyimg.com/viewer.php?img=68451locked_workstation.png)
gold_cat
11-11-2007, 18:55
Расскажу, для чего всё это надо.
Есть программа на некотором скриптовом языке (к примеру, на AutoIt3). Этот скрипт должен выполняться в течении всего дня под одним пользователем, а я хотел бы работать на том же ПК под другим пользователем. Для вылавливания разных ошибочных ситуаций в скрипте приходится не только вести протоколирование в виде текстового файла, но и сохранять в определённые моменты образ экрана в графических файлах вида <date>-<time>.bmp. Под "образом экрана" я понимаю картинку, которую обычно получают после нажатия клавиши "Print Screen" и вставки данных из буфера в графический редактор вроде Paint.
Последовательность таких картинок я и хотел бы иметь, чтобы отслеживать выполнение скрипта. Без блокирования экрана, без смены пользователя, программа на Delphi, время от времени запускаемая из скрипта, вполне исправно формирует такой видео-протокол.
Если в скрипте эмулировать нажатие "Print Screen", то при блокированном экране это нажатие никакой информации в буфер не заносит и в графическом редакторе пункт "Вставить" остаётся в неактивном состоянии.
Возможно, если запустить скрипт в WinXP на виртуальной машине и свернуть окно виртуальной машины, то видео-протокол будет формироваться. Но такой подход меня не устроит, т.к. значительно усложняется решение других задач.
Т.е. вопрос можно уточнить - какие настройки WinXP надо поменять, чтобы получить файл с образом экрана блокированной сессии после смены пользователя и отслеживать таким способом изменения на экране в этой сессии?
BlackEric
11-11-2007, 19:47
Т.е. вопрос можно уточнить - какие настройки WinXP надо поменять, чтобы получить файл с образом экрана блокированной сессии после смены пользователя и отслеживать таким способом изменения на экране в этой сессии? »
Никак. Если вы сменили пользователя, то его десктоп просто не отображается. А сделать скриншот того что нет проблематично.
Этот скрипт должен выполняться в течении всего дня под одним пользователем, а я хотел бы работать на том же ПК под другим пользователем.
Может тогда выручит команда RunAs?
К примеру, скрипт запускаем от имени требуемого пользователя runas /user:YourCompName\User4Scripts StartScript.exe,
при этом находимся в сесии требуемого для работы пользователя.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.