Re[3]: Как из HWND получить HBITMAP ?
От: kero Россия  
Дата: 22.11.05 22:05
Оценка:
Здравствуйте, mOzG573, Вы писали:

OG> invoke GetDC,windhand

OG> mov hDC,eax

OG> invoke CreateCompatibleDC,hDC

OG> mov hMemDC,eax



OG> invoke CreateCompatibleBitmap,hDC,1024,768

OG> mov hBitmap,eax
OG> invoke SelectObject,hMemDC,hBitmap

OG> invoke SendMessage,windhand,WM_PAINT,hMemDC,0

OG> invoke SendMessage,windhand,WM_ERASEBKGND,hMemDC,0

OG> invoke BitBlt,hMemDC,0,0,1024,768,hDC,0,0,SRCCOPY

OG> invoke ReleaseDC,windhand,hDC


OG> invoke GetPixel,hMemDC,1000,5

OG> mov Color,eax

OG>Pls obysnite 4ego en prawelno delay pri otkritom oktne wse normalno beretza nujnii pixel a wot kogda sakrito okno todrugim ili swernuto ne pomogart hoty wrode kak WM_PAINT posilay moemu oknu , wesi topik pro4ital no ne kak ne ponyl w 4em sagwoska



"ili swernuto" — это отбросим

Вот фрагмент рабочего кода для XP с PrintWindow, может извлечете что-то для себя полезное:

  invoke GetWindowRect,hwnd2,addr rect2  ;  hwnd2 - нужное окно
  
  invoke GetAncestor,hwnd2,GA_ROOT ; GA_ROOTOWNER
  mov hwnd,eax 
  invoke GetWindowRect,hwnd,addr rect
  
  invoke IsWindowVisible,hwnd
  mov flag,eax
  .if eax==0
      invoke SetWindowPos,hwnd,0,-3000,0,0,0,SWP_NOZORDER or SWP_NOSIZE or SWP_NOACTIVATE
      invoke SetWindowPos,hwnd,0,0,0,0,0,SWP_NOZORDER or SWP_NOSIZE or SWP_NOACTIVATE or SWP_NOMOVE or SWP_SHOWWINDOW
  .endif
  
  invoke GetWindowDC,hwnd
  mov hdc,eax
; invoke GetDesktopWindow
  xor eax,eax    
  mov hwnd0,eax
  invoke GetDC,eax
  mov hdc0,eax
  
  invoke CreateCompatibleDC,hdc0
  mov hdcmem,eax
  
  mov eax,rt.right
  sub eax,rt.left
  mov ecx,rt.bottom
  sub ecx,rt.top
  invoke CreateCompatibleBitmap,hdc,eax,ecx
  mov hbmp,eax
  invoke SelectObject,hdcmem,hbmp
  mov hobj,eax
  
  invoke PrintWindow,hwnd,hdcmem,0
  
  invoke CreateCompatibleDC,hdc0
  mov hdcmem2,eax
  
  mov eax,rt2.right
  sub eax,rt2.left
  mov _w2,eax
  mov ecx,rt2.bottom
  sub ecx,rt2.top
  mov _h2,ecx
  invoke CreateCompatibleBitmap,hdc,eax,ecx
  mov hbmp2,eax
  invoke SelectObject,hdcmem2,hbmp2
  mov hobj2,eax
  
  mov eax,rt2.left
  sub eax,rt.left
  mov ecx,rt2.top
  sub ecx,rt.top
  invoke BitBlt,hdcmem2,0,0,_w2,_h2,hdcmem,eax,ecx,SRCCOPY
  
; invoke GetPixel,hdcmem2,pt.x,pt.y   ;  место для выкусывания пикселя  :-)
  
  invoke SelectObject,hdcmem,hobj
  invoke DeleteDC,hdcmem
  invoke SelectObject,hdcmem2,hobj2
  invoke DeleteDC,hdcmem2
  
; invoke OpenClipboard,hwnd
  invoke OpenClipboard,hwnd0
  invoke EmptyClipboard 
  invoke SetClipboardData,CF_BITMAP,hbmp2
  invoke CloseClipboard
  
  .if flag==0
      invoke SetWindowPos,hwnd,0,0,0,0,0,SWP_NOZORDER or SWP_NOSIZE or SWP_NOACTIVATE or SWP_NOMOVE or SWP_HIDEWINDOW
      invoke SetWindowPos,hwnd,0,rt.left,rt.top,0,0,SWP_NOZORDER or SWP_NOSIZE or SWP_NOACTIVATE
  .endif
  
  invoke DeleteObject,hbmp
  invoke DeleteObject,hbmp2
  invoke ReleaseDC,hwnd0,hdc0
  invoke ReleaseDC,hwnd,hdc
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[4]: Как из HWND получить HBITMAP ?
От: Аноним  
Дата: 23.11.05 04:18
Оценка:
Конечно, по-хорошему надо было бы запросить IsWindowVisible для ВСЕЙ цепочки от hwnd2 до hwnd, сохранить результат, сделать Visible каждого в цепочке,
а в конце — восстановить исходную конфигурацию... но пусть уж остается как есть
Re[5]: Как из HWND получить HBITMAP ?
От: kero Россия  
Дата: 23.11.05 04:26
Оценка:
А>Конечно, по-хорошему надо было бы запросить IsWindowVisible для ВСЕЙ цепочки от hwnd2 до hwnd, сохранить результат, сделать Visible каждого в цепочке,
А>а в конце — восстановить исходную конфигурацию... но пусть уж остается как есть

Ай, забыл войти с парадного входа
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[6]: Как из HWND получить HBITMAP ?
От: mOzG573  
Дата: 23.11.05 21:34
Оценка:
wot tolko nepoimy kopiruetza okno s clienskoi 4astiy 4ernoi
Re[7]: Как из HWND получить HBITMAP ?
От: mOzG573  
Дата: 23.11.05 23:20
Оценка:


wot takay gadosty glawnoe title proresowiwaetza a wnutri okna 4ernota podkajite 4ego eto mojet bity
Re[8]: Как из HWND получить HBITMAP ?
От: Antech  
Дата: 24.11.05 06:33
Оценка:
Это может быть Direct3D. Что за программа? Видеоплеер?
Re[9]: Как из HWND получить HBITMAP ?
От: mOzG573  
Дата: 24.11.05 11:09
Оценка:
Здравствуйте, Antech, Вы писали:

A>Это может быть Direct3D. Что за программа? Видеоплеер?



eto igra


strano esli prosto bral hDC i iskal tam pixel to wse normalno wot pomestil w pamyti i wot takay gadosty
Re[10]: Как из HWND получить HBITMAP ?
От: mOzG573  
Дата: 24.11.05 20:41
Оценка:
Здравствуйте, mOzG573, Вы писали:

OG>Здравствуйте, Antech, Вы писали:


A>>Это может быть Direct3D. Что за программа? Видеоплеер?



da pohoje eto Direct3D tak kak skajem okno mIRC normalno proresoswiwaet a wot igrowoe okno uje neho4et i odna 4ernota
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.