Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 282

/ вопрос открыт /

Приветствую, уважаемые эксперты!
Работаю по самоучителю.Нашел дескрипторы окон и пытаюсь вывести скрин окна на Form2.Image1,код:
фрагмент кодаВыводится в любом случае только(скрин),форма 2- это куда я пытаюсь вывести,что не так и как с этим бороться,подскажите пожалуйста.

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

igoriy Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: igoriy (статус: Посетитель)
Вопрос отправлен: 14 октября 2009, 09:51
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: min@y™

Написал тебе пример - снятие скриншота окна Notepad.exe. Прицепляю.
К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 14 октября 2009, 11:10
Оценка за ответ: 5

Комментарий к оценке: Спасибо

Мини-форум вопроса

Всего сообщений: 18; последнее сообщение — 14 октября 2009, 16:12; участников в обсуждении: 4.
Тов. Женька

Тов. Женька (статус: 3-ий класс), 14 октября 2009, 10:17 [#1]:

Не очень понял в чем проблема.
igoriy

igoriy (статус: Посетитель), 14 октября 2009, 10:20 [#2]:

Не рисует окно открытой программы,а только что на скрине и все
Тов. Женька

Тов. Женька (статус: 3-ий класс), 14 октября 2009, 10:24 [#3]:

Если на вскидку по мелочам, то
1. Зачем WindowToBMP назначать функцией, если возвращаемое значение не используется?
2. Исключить из функции WindowToBMP строку WD := d; - это лишнее.
Тов. Женька

Тов. Женька (статус: 3-ий класс), 14 октября 2009, 10:27 [#4]:

А переменная d как-нибудь инициализируется?
Если сделать так:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.Show;
  WindowToBMP(Form1.Handle);
end;
igoriy

igoriy (статус: Посетитель), 14 октября 2009, 10:32 [#5]:

дело в том ,что в начале проги дескриптор WD преобразуется в строку и d,так было удобней, затем наоборот преобразует WD в
integer
igoriy

igoriy (статус: Посетитель), 14 октября 2009, 10:37 [#6]:

Кстати WindowToBM я и не понимаю до конца,разве не эта функция должна возвращать картинку от любого открытого окна по определенному дескриптору?
Тов. Женька

Тов. Женька (статус: 3-ий класс), 14 октября 2009, 10:37 [#7]:

Т.е., если я правильно понимаю, вы пытаетесь вывести в Form2 скрин какого-то определенного окна, а выводится совсем не то. Так?
igoriy

igoriy (статус: Посетитель), 14 октября 2009, 10:39 [#8]:

да.
Тов. Женька

Тов. Женька (статус: 3-ий класс), 14 октября 2009, 10:41 [#9]:

igoriy:
"
Кстати WindowToBM я и не понимаю до конца,разве не эта функция должна возвращать картинку от любого открытого окна по определенному дескриптору? "

Ну, если бы, в коде было написано:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.Image1.Picture.Bitmap := WindowToBMP(Form1.Handle);
  Form2.Show;
end;
, то это была бы функия (попутно изменив код функции), а в вашем случае процедура, обозванная функцией.
Тов. Женька

Тов. Женька (статус: 3-ий класс), 14 октября 2009, 10:44 [#10]:

Так попробуйте принудительно указать в вызове функции хэндл требуемого окна, а не через переменную. И лучше было бы исходники выслать.
igoriy

igoriy (статус: Посетитель), 14 октября 2009, 10:46 [#11]:

а нельзя для особа тупых примерчик.Допустим я вставляю дескриптор(который программа уже нашла ранее)и мне надо вывести скрин этого окна на Form2.Image1.На практике лучше усваивается,тем более многие эксперты посоветовали мой самоучитель в топку,слишком сложно и коряво объясняется и большинство листингов заранее с ошибками
igoriy

igoriy (статус: Посетитель), 14 октября 2009, 10:49 [#12]:

Я исходник могу прислать- только сильно не смейтесь и не издевайтесь.И еще а как его теперь сюда прикрепить?
Тов. Женька

Тов. Женька (статус: 3-ий класс), 14 октября 2009, 10:58 [#13]:

Никакого смеха и издевок, обещаю. Сам через это прошел, поэтому такое не практикую.
igoriy

igoriy (статус: Посетитель), 14 октября 2009, 11:01 [#14]:

А как всетаки добавить листинг сюда?
igoriy

igoriy (статус: Посетитель), 14 октября 2009, 11:03 [#15]:

фрагмент кода вроде так
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 14 октября 2009, 15:44 [#16]:

Автору вопроса: когда задаёте вопрос, код лучше вставлять в приложение, а не через сервис обмена кодом. Так будет удобнее и вам и экспертам - он будет отображаться прямо под вопросом. А сейчас нужно специально переходить по ссылке. При обсуждении в мини-форуме - да, вы правильно делаете.
igoriy

igoriy (статус: Посетитель), 14 октября 2009, 15:56 [#17]:

Понял.Спасибо
min@y™

min@y™ (статус: Доктор наук), 14 октября 2009, 16:12 [#18]:

Ну таки мой ответ помог или где?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:28
Выполнено за 0.02 сек.