Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Получить снимок экрана при блокировании WinXP (http://forum.oszone.net/showthread.php?t=93825)

gold_cat 09-11-2007 21:30 675820

Получить снимок экрана при блокировании 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 было бы записано актуальное изображение экрана, а не белый прямоугольник?

Vadikan 09-11-2007 23:00 675877

Цитата:

Цитата gold_cat
Запуск циклически производится другой программой после блокирования экрана WinXP командами "Пуск->Выход из системы->Смена пользователя". »

А что вы снять-то хотите? Может вам Виртуальные машины проще снимать?

gold_cat 10-11-2007 09:24 676036

Хочу получать образ экрана в виде bmp-файла после блокирования WinXP.
Виртуальные машины в этом точно не помогут.

Vadikan 10-11-2007 19:11 676302

Цитата:

Цитата gold_cat
Виртуальные машины в этом точно не помогут. »

Меня несколько смущает категоричность ваших суждений.
Цитата:

Цитата gold_cat
Хочу получать образ экрана в виде bmp-файла после блокирования WinXP. »

Простите, что такое "образ экрана"? Я понял так, что это снимок экрана, скриншот имеется в виду. В этом случае виртуальные машины ваши лучшие друзья. Для примера приводится скриншот заблокированной Windows Vista.


gold_cat 11-11-2007 18:55 676807

Расскажу, для чего всё это надо.

Есть программа на некотором скриптовом языке (к примеру, на AutoIt3). Этот скрипт должен выполняться в течении всего дня под одним пользователем, а я хотел бы работать на том же ПК под другим пользователем. Для вылавливания разных ошибочных ситуаций в скрипте приходится не только вести протоколирование в виде текстового файла, но и сохранять в определённые моменты образ экрана в графических файлах вида <date>-<time>.bmp. Под "образом экрана" я понимаю картинку, которую обычно получают после нажатия клавиши "Print Screen" и вставки данных из буфера в графический редактор вроде Paint.

Последовательность таких картинок я и хотел бы иметь, чтобы отслеживать выполнение скрипта. Без блокирования экрана, без смены пользователя, программа на Delphi, время от времени запускаемая из скрипта, вполне исправно формирует такой видео-протокол.

Если в скрипте эмулировать нажатие "Print Screen", то при блокированном экране это нажатие никакой информации в буфер не заносит и в графическом редакторе пункт "Вставить" остаётся в неактивном состоянии.

Возможно, если запустить скрипт в WinXP на виртуальной машине и свернуть окно виртуальной машины, то видео-протокол будет формироваться. Но такой подход меня не устроит, т.к. значительно усложняется решение других задач.

Т.е. вопрос можно уточнить - какие настройки WinXP надо поменять, чтобы получить файл с образом экрана блокированной сессии после смены пользователя и отслеживать таким способом изменения на экране в этой сессии?

BlackEric 11-11-2007 19:47 676842

Цитата:

Цитата gold_cat
Т.е. вопрос можно уточнить - какие настройки WinXP надо поменять, чтобы получить файл с образом экрана блокированной сессии после смены пользователя и отслеживать таким способом изменения на экране в этой сессии? »

Никак. Если вы сменили пользователя, то его десктоп просто не отображается. А сделать скриншот того что нет проблематично.

Admiral 12-11-2007 01:48 677046

Цитата:

Этот скрипт должен выполняться в течении всего дня под одним пользователем, а я хотел бы работать на том же ПК под другим пользователем.
Может тогда выручит команда RunAs?

К примеру, скрипт запускаем от имени требуемого пользователя
Код:

runas /user:YourCompName\User4Scripts StartScript.exe
,
при этом находимся в сесии требуемого для работы пользователя.


Время: 03:54.

Время: 03:54.
© OSzone.net 2001-