Это объединяет все подходы, описанные до сих пор. Он также обрабатывает сценарии с несколькими мониторами.
Передайте вид скриншота, который вы хотите, и TJpegImage, и он присвоит ваш запрошенный снимок экрана этому изображению.
///////////
uses
Jpeg;
type //define an ENUM to describe the possible screenshot types.
TScreenShotType = (sstActiveWindow, sstActiveClientArea,
sstPrimaryMonitor, sstDesktop);
///////////
procedure TfrmMain.GetScreenShot(shotType: TScreenShotType;
var img: TJpegImage);
var
w,h: integer;
DC: HDC;
hWin: Cardinal;
r: TRect;
tmpBmp: TBitmap;
begin
hWin := 0;
case shotType of
sstActiveWindow:
begin
//only the active window
hWin := GetForegroundWindow;
dc := GetWindowDC(hWin);
GetWindowRect(hWin,r);
w := r.Right - r.Left;
h := r.Bottom - r.Top;
end; //sstActiveWindow
sstActiveClientArea:
begin
//only the active client area (active window minus title bars)
hWin := GetForegroundWindow;
dc := GetDC(hWin);
GetWindowRect(hWin,r);
w := r.Right - r.Left;
h := r.Bottom - r.Top;
end; //sstActiveClientArea
sstPrimaryMonitor:
begin
//only the primary monitor. If 1 monitor, same as sstDesktop.
hWin := GetDesktopWindow;
dc := GetDC(hWin);
w := GetDeviceCaps(DC,HORZRES);
h := GetDeviceCaps(DC,VERTRES);
end; //sstPrimaryMonitor
sstDesktop:
begin
//ENTIRE desktop (all monitors)
dc := GetDC(GetDesktopWindow);
w := Screen.DesktopWidth;
h := Screen.DesktopHeight;
end; //sstDesktop
else begin
Exit;
end; //case else
end; //case
//convert to jpg
tmpBmp := TBitmap.Create;
try
tmpBmp.Width := w;
tmpBmp.Height := h;
BitBlt(tmpBmp.Canvas.Handle,0,0,tmpBmp.Width,
tmpBmp.Height,DC,0,0,SRCCOPY);
img.Assign(tmpBmp);
finally
ReleaseDC(hWin,DC);
FreeAndNil(tmpBmp);
end; //try-finally
end;
MachineKey используется для:
аутентификации, устанавливающего веб-приложение на нескольких серверах, требует, чтобы тот же Ключ Машины, настроенный на всех них для Выравнивания нагрузки, работал.
Для наблюдения всех деталей обратитесь к: MSDN, Как К: Настройте MachineKey в ASP.NET 2.0
Ключ машины также используется для шифрования/дешифрования webresources.axd параметров.
Даже на единственном сервере ключ машины должен быть настроен, потому что любой перерабатывает домена приложения, генерирует новый ключ, когда он установлен на автоматический. Это вызывает следующую обратную передачу только для страниц, представленных перед перерабатыванием, для порождения ошибки проверки состояния отображения, и также выходит с ресурсами в течение того времени.