procedura z WinApi dla Delphi

Odpowiedz Nowy wątek
2011-08-22 22:05
0

Witam, zwracam się tutaj z prośbą o pomoc, do kogoś, kto wie coś więcej ode mnie i chciałby się tym podzielić:)
mianowicie, znalazłem funkcję graficzną: PrintWindow, ona jest w WinApi w którejś tam bibliotece... google mówią, że wystarczy pod Uses dopisać "windows" i już procedury z WinApi mają być dostępne... tymczasem albo ja źle to robię, albo google się mylą...nie wiem jak to zrobić, żeby działało:/ pomógłby mi ktoś?, ale z tą funkcją, albo z inną, celem jest zrobienie zrzutu okna, które niekoniecznie jest na pierwszym planie, albo zminimalizowane:) w WinApi jestem praktycznie zielony:-(

function tform1.zrzut(uchwyt:hwnd):tBitMap;
begin
PrintWindow(uchwyt,tutaj cos-właściwie nie wiem co, ale to nie o to chodzi,PW_CLIENTONLY);
end; 

takie coś zwraca mi błąd: Unit1.pas(175): Undeclared identifier: 'PrintWindow'

Pozostało 580 znaków

2011-08-22 22:18
0

znalazłem na necie (http://delphi.about.com/od/delphitips2008/qt/print_window.htm), trochę sformatowałem bo nie dało się czytać:

function WindowSnap(windowHandle: HWND; bmp: TBitmap): boolean;
var
  r: TRect;
  user32DLLHandle: THandle;
  printWindowAPI: function(sourceHandle: HWND; destinationHandle: HDC; nFlags: UINT): BOOL; stdcall;
begin
  result := False;
  user32DLLHandle := GetModuleHandle(user32);
  if user32DLLHandle <> 0 then
    begin
      @printWindowAPI := GetProcAddress(user32DLLHandle, 'PrintWindow');
      if @printWindowAPI <> nil then
        begin
          GetWindowRect(windowHandle, r);
          bmp.Width := r.Right - r.Left;
          bmp.Height := r.Bottom - r.Top;
          bmp.Canvas.Lock;
          try
            result := printWindowAPI(windowHandle, bmp.Canvas.Handle, 0);
          finally
            bmp.Canvas.Unlock;
          end;
        end;
    end;
end;
 
//to dodałem sam, ale działa znakomicie
procedure TForm1.Button1Click(Sender: TObject);
begin
  WindowSnap(Button1.Handle, Image1.Picture.Bitmap);
end;

░█░█░█░█░█░█░█░█░█░█░█░

Pozostało 580 znaków

2011-08-22 22:22
0

jak ci brakuje to możesz ją dodać pisząc tak:

function PrintWindow(hwnd:HWND; hdcBlt:HDC; nFlags:UINT):BOOL; stdcall; external 'user32.dll';

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0