Сейчас на форуме: vasilevradislav, tyns777, zombi-vadim (+3 невидимых)

 eXeL@B —› Программирование —› скопировать картинку
Посл.ответ Сообщение

Ранг: 24.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 26 января 2008 21:06
· Личное сообщение · #1

Есть программа написана на Net. Она выводит картинку. я могу узнать ее handle. когда чужое приложение открыто- картинка копируется, а когда чужое приложение свернуто- не копируется.
Реально ли вообще скопировать картинку из свернутого чужого приложения?
пишу на делфи. помогите, мож кто знает....???



Ранг: 253.9 (наставник)
Активность: 0.130
Статус: Участник

Создано: 26 января 2008 22:25
· Личное сообщение · #2

хм... хэндл на какой объект ты получаешь?

-----
MicroSoft? Is it some kind of a toilet paper?




Ранг: 24.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 27 января 2008 11:58
· Личное сообщение · #3

вот один из способов нашел:
указываешь координаты картинки.(тыкаем в центр картинки к примеру)
SetCursorPos(488,13);
h := WindowFromPoint(Mouse.CursorPos);
h- хэндл.
вроде работает. можно было бы конечно и по другому получить хэндл. Но при этом способе картинка копируется, если приложение не свернуто, а если свернуто - то не копируется.




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 27 января 2008 14:40 · Поправил: Isaev
· Личное сообщение · #4

Electrod способ - ахренеть!!! Ну если ты кликнишь по картинке в свёрнутом приложении, то она тоже скопируется
Можно например просмотреть список процессов и по названию получить ID процесса из него хендл приложения... потом просмотреть список дочерних компонентов и так же по имени (или по классу если такой на форме один) найти нужный... тогда будет работать независимо от свёрнутости ;)

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 27 января 2008 14:50 · Поправил: tihiy_grom
· Личное сообщение · #5

Сделай перебор всех дочерних окон указанного процесса с поиском нужного класса окна (того, в котором картинка)

P.S. Молодец, Isaev, исправил своё сообщение после моего и получилось что я тупо повторил тоже самое



Ранг: 24.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 27 января 2008 15:33 · Поправил: Electrod
· Личное сообщение · #6

Isaev , tihiy_grom спасибо.
в принципе найти хэндл через который скопировать не проблема. я его нашел. а вот дальше- проблема. может я не так копирую!???, но если окно к примеру не сворачивать , а передвинуть за пределы экрана. и скопировать картинку- получается пол картинки нормально, а половина (которая за пределами) - белый фон. т.е. когда картинка не в поле видимости -вместо нее белый фон.

копирую вот этой функцией -
BitBlt( Canvas.Handle, 0, 0, Width, Height, WinDC, 0, 0, SRCCOPY);

может тут лажа?



Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 27 января 2008 17:55
· Личное сообщение · #7

Electrod
Может тебе попробовать поработать с ресурсами exe-файла, а не с DC?


 eXeL@B —› Программирование —› скопировать картинку
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати