Привет всем! Вопрос: как сделать скриншот и отправить его, используя компонент idUDPClient или idUDPServer (моя программа на них основана)? А как этот скриншот можно получить?
Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
16-03-2008 09:10
А не можете ли готовый пример показать отправки и принятия картинки на UDP? по средствам Indy?
Честно говоря, я не знаю, зачем он нужен. Просто таким способом я текст получаю. А Вы не могли бы подсказать мне, каким способом можно получить изображение и поместить его в мой TImage?
Это всё я попробовал, картинка захватывается, но не знаю, отправляется или нет, так как не пойму, как получить-то картинку? Кстати, в свойствах IdUDPClient-а указал размер буфера в 4 Мб (в байтах), тоже вроде нет ошибок (программа не виснет и фатал-эрроров не выдает).
Далее Bitmap надо сохранить в Stream или блок памяти.
Вот следующий кусок кода:
PackCmd - это record но может быть и указателем и Stream.
TIdUDPBase(IdUDPClient).SendBuffer(IP, WPort, PackCmd, SizeOf(PackCmd));
Вот кусок кода, делающий снимок экрана, в имени будет Дата-Время. Сжимается всё это в формат PNG, как наиболее экономичный для скриншотов (ну если на экране не фотография, конечно).
Модуль PNGImage находится в интернете на раз, но можно выкинуть его и сохранять по другому.
uses PNGimage
//--------------
DeskTop := TCanvas.Create;
Bitmap := TBitmap.Create;
PNG:=TPNGObject.Create;
try
with DeskTop do
Handle := GetWindowDC(GetDesktopWindow);
Bitmap.width:=Screen.Width;
Bitmap.Height:=Screen.Height;
with Bitmap.Canvas do
CopyRect(Rect(0, 0, Screen.Width, Screen.Height),DeskTop,Rect(0, 0, Screen.Width, Screen.Height));
PNG.Assign(Bitmap);
PNG.SaveToFile('c:\'+FormatDateTime('"Снимок_"dd.mm.yy"_"hh.mm.ss_', Now)+'.png');
beep;
finally
Bitmap.Free;
DeskTop.Free;
PNG.Free;
end;
//--------------
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.