Скриншот Winlogon-десктопа в Server 2012R2
От: xteam777  
Дата: 24.10.16 08:45
Оценка:
Мне необходимо делать скриншот Winlogon-десктопа.

На форме расположен таймер (1 сек). Его обработчик:
Код:
procedure TForm18.Timer1Timer(Sender: TObject);
var
  bmp: TBitmap;
  DCDesk: HDC;
  FileName: String;
begin
  bmp := TBitmap.Create;
  bmp.Height := Screen.Height;
  bmp.Width := Screen.Width;
  DCDesk := GetWindowDC(GetDesktopWindow);
  BitBlt(bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DCDesk, 0, 0, SRCCOPY);
  FileName := 'Screenshot_' + FormatDateTime('mm-dd-yyyy-hhnnss', Now());
  if not DirectoryExists(ExtractFilePath(Application.ExeName) + 'Screenshots') then
    CreateDir(ExtractFilePath(Application.ExeName) + 'Screenshots');
  bmp.SaveToFile(Format(ExtractFilePath(Application.ExeName) + 'Screenshots\%s.bmp', [FileName]));
  ReleaseDC(GetDesktopWindow, DCDesk);
  bmp.Free;
end;


Запуск экзешника производится под пользователем SYSTEM.

В других версиях Windows все скрины получатся нормальными, а вот в Server 2012R2 если заблокировать комп (в это время скрины нормальные) и нажать на кнопку "Сменить пользователя" на экране блокировки, все дальшейшие скрины получаются пустыми (полностью белая заливка). Может кто подскажет в какую сторону копать?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.