Estou montando uma lan house aqui no bairro .. e quero ter o maximo de controle doque os usuários fazem nos computadores..
Então.. montei um pequeno aplicativo que pega o nome da janela ativa no windows e começa a tirar print screens..
O meu problema é.. que o código que estou a usar, os prints são salvos sem formato e com 5 MB cada.. então quero saber, como faço para salvar os prints em .gif ou .jpg..
Image1.Picture.SaveToFile('C:\prints\'+TempStr); // Salva os prints
end;
Lembrando a vocês que estou usando um código para pegar o nome da URL ativa.. ele pega e ativar o Timer1.. acho que não é necessario eu mostrar o código aqui.
Quero pedir tambem, mil desculpas por adcionar os códigos assim.. não estou conseguindo adcionar o CODEBOX ou SPOILER .. Ele da o Error 404.
Question
fsK.
Olá! ..
Estou montando uma lan house aqui no bairro .. e quero ter o maximo de controle doque os usuários fazem nos computadores..
Então.. montei um pequeno aplicativo que pega o nome da janela ativa no windows e começa a tirar print screens..
O meu problema é.. que o código que estou a usar, os prints são salvos sem formato e com 5 MB cada.. então quero saber, como faço para salvar os prints em .gif ou .jpg..
Os códigos que estou a uasr:
{ Tirar print screen }
// 1. Obtem o handle e a posição do mouse
function GetCursorInfo2: TCursorInfo;
var
hWindow: HWND;
pt: TPoint;
pIconInfo: TIconInfo;
dwThreadID, dwCurrentThreadID: DWORD;
begin
Result.hCursor := 0;
ZeroMemory(@Result, SizeOf(Result));
// Encontra a janela "mae" do mouse
if GetCursorPos(pt) then
begin
Result.ptScreenPos := pt;
hWindow := WindowFromPoint(pt);
if IsWindow(hWindow) then
begin
// Pega a thread do owner do mouse
dwThreadID := GetWindowThreadProcessId(hWindow, nil);
// Pega o id da thread atual
dwCurrentThreadID := GetCurrentThreadId;
if (dwCurrentThreadID <> dwThreadID) then
begin
if AttachThreadInput(dwCurrentThreadID, dwThreadID, True) then
begin
// Obtem o handle do cursor
Result.hCursor := GetCursor;
AttachThreadInput(dwCurrentThreadID, dwThreadID, False);
end;
end
else
begin
Result.hCursor := GetCursor;
end;
end;
end;
end;
// 2. Captura tela
function CaptureScreen: TBitmap;
var
DC: HDC;
ABitmap: TBitmap;
MyCursor: TIcon;
CursorInfo: TCursorInfo;
IconInfo: TIconInfo;
begin
// captura tela
DC := GetDC(GetDesktopWindow);
ABitmap := TBitmap.Create;
try
ABitmap.Width := GetDeviceCaps(DC, HORZRES);
ABitmap.Height := GetDeviceCaps(DC, VERTRES);
// BitBlt on our bitmap
BitBlt(ABitmap.Canvas.Handle,
0,
0,
ABitmap.Width,
ABitmap.Height,
DC,
0,
0,
SRCCOPY);
// Cria icone temporario
MyCursor := TIcon.Create;
try
// Devolve informação do cursor
CursorInfo := GetCursorInfo2;
if CursorInfo.hCursor <> 0 then
begin
MyCursor.Handle := CursorInfo.hCursor;
GetIconInfo(CursorInfo.hCursor, IconInfo);
// Desenha o cursor no bmp
ABitmap.Canvas.Draw(CursorInfo.ptScreenPos.X - IconInfo.xHotspot,
CursorInfo.ptScreenPos.Y - IconInfo.yHotspot, MyCursor);
end;
finally
// limpa tudo
MyCursor.ReleaseHandle;
MyCursor.Free;
end;
finally
ReleaseDC(GetDesktopWindow, DC);
end;
Result := ABitmap;
end;
{ Salvar print screens }
procedure TForm1.Timer1Timer(Sender: TObject);
Var
TempStr : string;
begin
Image1.Picture.Assign(CaptureScreen);
TempStr := FormatDateTime('hh-mm-ss',now);
Image1.Picture.SaveToFile('C:\prints\'+TempStr); // Salva os prints
end;
Lembrando a vocês que estou usando um código para pegar o nome da URL ativa.. ele pega e ativar o Timer1.. acho que não é necessario eu mostrar o código aqui.
Quero pedir tambem, mil desculpas por adcionar os códigos assim.. não estou conseguindo adcionar o CODEBOX ou SPOILER .. Ele da o Error 404.
Edited by fsK.Link to comment
Share on other sites
3 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.