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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2014, 00:28   #11
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Так надо ещё и своей головой думать Вам надо взять часть изображения, а не взять и обрезать/сжать. Последнее и делает StretchBlt.
Ага. Как вы говорите, вроде что то получается. Но он как то странно скриншотит форму, чем ближе к Левому Верхнему Углу, тем точнее и лучше у него выходит.
Когда я программу, спускаю в правый нижний угол, то опять выдаёт белый скрин...
Janger вне форума Ответить с цитированием
Старый 30.04.2014, 00:31   #12
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Значит не правильно задаете координаты области экрана.
Человек_Борща вне форума Ответить с цитированием
Старый 30.04.2014, 00:33   #13
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Значит не правильно задаете координаты области экрана.
да, я тоже думаю что в этом проблема...
Ладно, я наверное спать лягу, а завтра уже разберусь с проблемой.
Спасибо большое, за помощь в написании кода
Janger вне форума Ответить с цитированием
Старый 30.04.2014, 00:50   #14
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

А правильно будет так:
Код:
procedure TForm2.Button1Click(Sender: TObject);
var
  h: THandle;
  wr: TRect;
  bmp: TBitMap;
  hwDC: HDC;
begin
  h := findwindow(PChar('OperaWindowClass'), nil);
  if h <> 0 then
  begin
    GetWindowRect(h, wr);
    hwDC := GetWindowDC(h); //Получим DC окна, откуда будет браться изображение
    bmp := TBitMap.Create;
    bmp.Width := wr.Width; //Установим высоту и ширину битмапа
    bmp.Height := wr.Height;
    SetForegroundWindow(h); //Отправим на 1й план наше окно.
   //Скопируем DC окна в наш canvas
    BitBlt(bmp.Canvas.Handle, 0, 0, bmp.Width, bmp.Height, hwDC, 0, 0, SRCCOPY);

    bmp.SaveToFile('D:\1.bmp');
    bmp.Free;
    ReleaseDC(h, hwDC); //Освободим DC
  end;
end;
P.S. Про DC совсем забыл сказать во 2м посте.

Последний раз редактировалось Человек_Борща; 30.04.2014 в 01:23.
Человек_Борща вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Блокирование получения WM_CONTEXTMENU сторонней программы. Smogg Win Api 0 24.06.2013 17:15
Экспорт информации из сторонней программы alkador Общие вопросы Delphi 5 26.05.2012 21:39
Данные из памяти сторонней программы epileptick Общие вопросы C/C++ 8 01.01.2011 19:19
Определение завершения сторонней программы Хамяг Общие вопросы Delphi 3 26.11.2008 18:12
Как определить момент запуска сторонней программы? NioTo Win Api 2 17.12.2007 16:40