Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2014, 08:30   #1
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
Лампочка TWebBrowser скрытно взять скриншот

Добрый час!

Как сделать скриншот сайта в TWebBrowser, не показывая его(TWebBrowser) пользователю?

P.S. показать на долю секунды TWebBrowser можно
beegl вне форума Ответить с цитированием
Старый 07.02.2014, 08:43   #2
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

А можно узнать цель этой операции?
doktor255 вне форума Ответить с цитированием
Старый 07.02.2014, 09:00   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

http://www.programmersforum.ru/showthread.php?t=245078
http://www.programmersforum.ru/showthread.php?t=94574
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.02.2014, 09:04   #4
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию

doktor255, готовый отчет оформить



это окно моей программы:



что-то нашел, только не знаю какой модуль надо подключить для IViewObject

Код:
procedure WebBrowserScreenShot(const wb: TWebBrowser; const fileName: TFileName);
var
viewObject : IViewObject;
r : TRect;
bitmap : TBitmap;
begin
if wb.Document <> nil then
  begin
    wb.Document.QueryInterface(IViewObject, viewObject) ;
    if Assigned(viewObject) then
      bitmap := TBitmap.Create;
      r := Rect(0, 0, wb.Width, wb.Height) ;
      bitmap.Height := wb.Height;
      bitmap.Width := wb.Width;
      viewObject.Draw(DVASPECT_CONTENT, 1, nil, nil, Application.Handle, bitmap.Canvas.Handle, @r, nil, nil, 0) ;
      bitmap.SaveToFile(filename);
      bitmap.Free;
      viewObject._Release;
end;
end;
beegl вне форума Ответить с цитированием
Старый 07.02.2014, 09:09   #5
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

beegl ActiveX
doktor255 вне форума Ответить с цитированием
Старый 07.02.2014, 09:10   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

http://msdn.microsoft.com/en-us/library/aa911697.aspx
Library oleaut32.lib, uuid.lib
Соответствующие ДЛЛки найти, или модули, если в Делфи предусмотрено.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.02.2014, 09:35   #7
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию

как переделать фунукию, чтоб прямо в Image1 сохраняло?

Код:
procedure TForm1.WebBrowserScreenShot(const wb: TWebBrowser;
  const fileName: TFileName);
var
viewObject : IViewObject;
r : TRect;
bitmap : TBitmap;
begin
if wb.Document <> nil then
begin
wb.Document.QueryInterface(IViewObject, viewObject) ;
if Assigned(viewObject) then
try
bitmap := TBitmap.Create;
try

r := Rect(0, 0, wb.Width, wb.Height) ;  //left, top, right, bottom
bitmap.Height := wb.Height;
bitmap.Width := wb.Width;

viewObject.Draw(DVASPECT_CONTENT, 1, nil, nil, Application.Handle, bitmap.Canvas.Handle, @r, nil, nil, 0) ;
with TJPEGImage.Create do
try
Assign(bitmap) ;
SaveToFile(fileName) ;
finally
Free;
end;
finally
bitmap.Free;
end;
finally
viewObject._Release;
end;
end;
end;
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowserScreenShot(web1,'D:\WebBrowserImage.jpg') ;
end;
beegl вне форума Ответить с цитированием
Старый 07.02.2014, 09:39   #8
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Код:
procedure WebBrowserScreenShot(const wb: TWebBrowser);
var
viewObject : IViewObject;
r : TRect;
bitmap : TBitmap;
begin
if wb.Document <> nil then
  begin
    wb.Document.QueryInterface(IViewObject, viewObject) ;
    if Assigned(viewObject) then
      bitmap := TBitmap.Create;
      r := Rect(0, 0, wb.Width, wb.Height) ;
      bitmap.Height := wb.Height;
      bitmap.Width := wb.Width;
      viewObject.Draw(DVASPECT_CONTENT, 1, nil, nil, Application.Handle, bitmap.Canvas.Handle, @r, nil, nil, 0) ;
      Form1.Image1.AutoSize := true;
      Form1.Image1.Picture.Assign(Bitmap);
      bitmap.Free;
      viewObject._Release;
end;
end;
P.S. Try внутри Try. Двойная контрацепция?

Последний раз редактировалось doktor255; 07.02.2014 в 10:24.
doktor255 вне форума Ответить с цитированием
Старый 07.02.2014, 10:07   #9
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию

остановился на этом реализе:

основное окно:



окно отчета:



окно о программе:


Последний раз редактировалось beegl; 07.02.2014 в 13:23.
beegl вне форума Ответить с цитированием
Старый 07.02.2014, 13:59   #10
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Не самый лучший релиз, из кучи не нужных отвлекающих кнопок.

Цитата:
Intertelecom - это небольшая программка для проверки баланса
Ну как сказать, 2.7 Мб +огромное окно+WebBrowser+не отдерается от правого нижнего угла+нахера пароль вместе с программой отсылать?
ZuBy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TWebBrowser скрытно взять скриншот Человек_Борща Компоненты Delphi 2 07.10.2013 01:32
Как убрать отступы в TWebBrowser? + аналоги TWebBrowser? FleXik Общие вопросы Delphi 4 19.07.2013 21:53
загрузка флеш игры каждый день скрытно muham33 Общие вопросы Delphi 3 24.12.2012 21:07
Скриншот веб-страницы по URL без ее открытия в TWebBrowser. SkAndrew Общие вопросы Delphi 6 25.04.2010 21:08
Incompatible types: 'Unit1.TWebBrowser' and 'SHDocVw.TWebBrowser' simon15x Общие вопросы Delphi 0 10.04.2010 03:11