Hallo,
ich habe hier im Forum nach Screenshot gesucht und folgendes gefunden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| function ScreenshotHidden(wnd: HWND; const bmp: TBitmap): Boolean; var rec: TRect; dllh: THandle; PrintWindow: function(sHandle: HWND; dHandle: HDC; nFlags: UINT): BOOL; stdcall; begin Result := False; dllh := GetModuleHandle(user32); if dllh <> 0 then begin @PrintWindow:= GetProcAddress(dllh , 'PrintWindow'); if @PrintWindow <> nil then begin GetWindowRect(wnd, rec); bmp.Width := rec.Right - rec.Left; bmp.Height := rec.Bottom - rec.Top; bmp.Canvas.Lock; try result := PrintWindow(wnd, bmp.Canvas.Handle, 0); finally bmp.Canvas.Unlock; end; end; end; end; |
und hier suche ich das Fenster:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| function FindWindowEx2(hParent: HWND; ChildClassName: string; ChildNr: Word): HWND; var i: Word; hChild: HWND; begin hChild := 0; Result := 0; Dec(ChildNr); for i := 0 to ChildNr do begin hChild := FindWindowEx(hParent, hChild, PChar(ChildClassName), nil); if hChild = 0 then Break; Result := hChild; end; end;
procedure TForm1.Button1Click(Sender: TObject); var wndMain, wndChild: HWND; Bmp: TBitmap; begin wndMain := FindWindow('SunAwtFrame','******'); if wndMain <> 0 then begin wndChild := FindWindowEx(wndMain, 0, 'SunAwtCanvas', nil); wndChild := FindWindowEx(wndChild, 0, 'SunAwtCanvas', nil); wndChild := FindWindowEx2(wndChild,'SunAwtCanvas', 2); if wndChild <> 0 then begin ScreenshotHidden(wndChild, Image1.Picture.Bitmap); Image1.Invalidate; end; end; end; |
wenn ich das ausführe, dann bekomme ich nur ein Schwarzes Bild in Image1.
Woran kann das liegen?
Danke schonmal im Voraus.
MfG
Moderiert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 08.10.2009 um 15:51