|
|
#1
|
|||
|
|||
Снятие скриншота
Как сделать снятие скриншота?Народ подскажите плиззз!!!
|
#2
|
||||
|
||||
Код:
procedure GetWindowsScreen( PathToSave: string ); begin with TBitmap.Create do begin Width := Screen.Width; Height := Screen.Height; BitBlt( Canvas.Handle, 0, 0, Width, Height, GetDC( GetDesktopWindow ), 0, 0, SRCCOPY ); SaveToFile( PathToSave ); Free; end; end; procedure TForm1.Button1Click(Sender: TObject); begin GetWindowsScreen( 'C:\Screen.bmp' ); end; |
#3
|
|||
|
|||
Спасибо!
Пасибо огромное Decoding!!!
|
#4
|
|||
|
|||
Цитата:
А у меня не работает! Выдает такую ошибку: Incompatible types: "HDC" and "QPainterH" В чем дело? |
#5
|
|||
|
|||
Форма не должна быть видна на снимке
Decoding, мне всё в коде понятно, всё заработало. Но можно ли сделать так чтобы когда снимался скриншот форма не была видна(чтобы её не было на снимке) или всё это сделать через Hot Key и как???
|
#6
|
||||
|
||||
to A-VIP: я конечно могу ошибаться, но у меня такое впечатление, что ты пытался вставить этод код в прогу, которая использует библиотеку CLX. Если это так, то естественно, что код не работает... Используй VCL.
to Vlastelin Delphi: все можно. Перед снятием скриншота прячь окна (ShowWindow), которых не должно быть видно. Ище окна при помощи FindWindow. Возможно, тебе поможет эта статья - http://decoding.narod.ru/practic/wndinfo/wndinfo.html |
#7
|
|||
|
|||
Кароче типа того и было! СПС! Все терь гут.
|
#8
|
|||
|
|||
Цитата:
Лучше будет открыть главный файл проекта(Project>View Source) и после строки Код:
Application.CreateForm(TForm1, Form1); Код:
Form1.BorderStyle := bsNone; Последний раз редактировалось DungeonLords, 10.09.2008 в 12:54. |
#9
|
|||
|
|||
процедура мне чучуть не понятна GetWindowsScreen( PathToSave: string )
как мне сделать чтоб была функция возвращающия картинку типа:TBitmap 100X100 пикселов чтоб выглидела function GetWindowsScreen(const: x,y : integer):TBitmap я не как немогу разобратся с BitBlt например мне нужен кусочек экрана по x 200-300 ну и y 200-300 GetWindowsScreen(200,200); помогите пожалуйста |
#10
|
|||
|
|||
Код:
function getscreen(const x,y:integer ):tbitmap; var bitmap:tbitmap; begin with bitmap.Create do begin bitmap.Width := 100; bitmap.Height := 100; BitBlt(bitmap.Canvas.Handle, x, y, bitmap.Width, bitmap.Height, GetDC( GetDesktopWindow ), 0, 0, SRCCOPY ); result:=bitmap; Free; end; end; procedure TForm1.Button1Click(Sender: TObject); var J: TJPEGImage; begin j.Create; j.Assign(getscreen(200,200)); end; Последний раз редактировалось walear, 22.10.2008 в 20:21. |
#11
|
|||
|
|||
Ну да, не работает.
как минимум должно быть: Код:
begin bitmap := TBitmap.Create; with bitmap do ... |
#12
|
|||
|
|||
lmikle спасибо помогло
теперь правда новая проблема нехочет сохранят потом в джепег просто сохраняться пустой файл Код:
function getscreen(const x,y:integer ):tbitmap; var bitmap:tbitmap; begin bitmap:=tbitmap.Create; with bitmap do begin bitmap.Width := 100; bitmap.Height := 100; BitBlt(bitmap.Canvas.Handle, 0, 0, bitmap.Width, bitmap.Height, GetDC( GetDesktopWindow ), x, y, SRCCOPY ); bitmap.SaveToFile('temp.bmp'); result:=bitmap; bitmap.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); var J: TJPEGImage; begin j:=TJPEGImage.Create; j.Assign(getscreen(500,500)); j.CompressionQuality:=100; j.Compress; j.SaveToFile('temp.jpg'); j.Free; end; Последний раз редактировалось walear, 22.10.2008 в 21:01. |
#13
|
|||
|
|||
Не assign, а Canvas.Draw
Ну и размеры jpeg'у кто будет ставить??? |