窗口被遮住了怎么截去图片,高手帮忙看看这代码怎么不对.(100)

  • 主题发起人 wjb_2004
  • 开始时间
W

wjb_2004

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);varrt:Trect;h : Thandle;hMemDC,dc:hdc;bb : HBITMAP;beginh := FindWindow('asktao',nil);dc := GetwindowDC(h);GetwindowRect(h,rt);bb := CreateCompatibleBitmap(DC,rt.right - rt.left,rt.bottom - rt.top);hMemDC :=CreateCompatibleDC(dc);SelectObject(hMemDC, bb);PrintWindow(h,hMemDC,0);Image1.Canvas.Handle := hMemDC;Image1.Refresh;Image1.Picture.Bitmap.Handle := bb;Image1.Refresh;{OpenClipboard(0);EmptyClipboard();SetClipboardData(CF_BITMAP, bb);CloseClipboard();}ReleaseDC(h, DC);end;
 
W

wjb_2004

Unregistered / Unconfirmed
GUEST, unregistred user!
没人鸟我啊
 
M

mosac

Unregistered / Unconfirmed
GUEST, unregistred user!
窗口被遮挡好像不能截图!?
 
G

geluyx

Unregistered / Unconfirmed
GUEST, unregistred user!
Function PanelImage(aPanel:TPanel):TBitmap;Var Ofs:Integer;Begin Result := TBitmap.Create; Try Result.Width := aPanel.ClientWidth; Result.Height := aPanel.ClientHeight; Result.Canvas.Brush := aPanel.Brush; Result.Canvas.FillRect(aPanel.ClientRect); Result.Canvas.Lock; Try If GetWindowLong(aPanel.Handle, GWL_STYLE) And WS_BORDER = 0 Then Ofs := -1 // Don't draw form border Else Ofs := 0; // There is no border aPanel.PaintTo(Result.Canvas.Handle, Ofs, Ofs); Finally Result.Canvas.Unlock; End; Except Result.Free; Raise; End;End;
 

凤冠坡

Unregistered / Unconfirmed
GUEST, unregistred user!
是你的程序遮挡的还是被别人的程序?被遮挡就把那个窗口隐藏再截取图象。
 
W

wr960204

Unregistered / Unconfirmed
GUEST, unregistred user!
窗口被挡住也可以截图.用PrintWindow.不过窗口要处理了WM_Print或者WM_PintClient消息才行.有少数一些窗口是没处理的.是截不到的
 
顶部