Avatar billede jisch Mester
15. juli 2015 - 13:38 Der er 5 kommentarer og
1 løsning

PrtSc tast

Delphi 2009
Er der nogen der ved hvordan/om man kan aktivere PrtSc tasten fra et program?
Avatar billede poko1 Ekspert
15. juli 2015 - 14:20 #1
PrtSc tasten Er vel blot ment som en kopi taste hvor du sætter skærm indholdet ind i et Billedbehandlings program eller i Word
Avatar billede jisch Mester
15. juli 2015 - 14:29 #2
>poko1: Tak for kommentar. Ja, det er jeg med på, men jeg har lavet et program, hvor jeg gerne programmæssigt vil kunne aktivere PrtSc tasten. I øvrigt - flere tastaturer har ikke tasten - f.eks. Microsoft Surface.
Avatar billede stone Forsker
15. juli 2015 - 18:38 #3
Virker i d5,d6,d7,

procedure ScreenShot(Billede: TBitMap);
var
  c: TCanvas;
  r: TRect;
begin
  c := TCanvas.Create;
  c.Handle := GetWindowDC(GetDesktopWindow);
  try
    r := Rect(0, 0, Screen.Width, Screen.Height);
    Billede.Width := Screen.Width;
    Billede.Height := Screen.Height;
    Billede.Canvas.CopyRect(r, c, r);
  finally
    ReleaseDC(0, c.Handle);
    c.Free;
  end;
end;

procedure ScreenShotActiveWindow(Billede: TBitMap);
var
  c: TCanvas;
  r, t: TRect;
  h: THandle;
begin
  c := TCanvas.Create;
  c.Handle := GetWindowDC(GetDesktopWindow);
  h := GetForeGroundWindow;
  if h <> 0 then
    GetWindowRect(h, t);
  try
    r := Rect(0, 0, t.Right - t.Left, t.Bottom - t.Top);
    Billede.Width  := t.Right - t.Left;
    Billede.Height := t.Bottom - t.Top;
    Billede.Canvas.CopyRect(r, c, t);
  finally
    ReleaseDC(0, c.Handle);
    c.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Visible := False;
  Sleep(750); //some delay
  ScreenShotActiveWindow(Image1.Picture.BitMap);
  Form1.Visible := True;
end;
Avatar billede stone Forsker
15. juli 2015 - 18:40 #4
glemte lige. ved ikke om den virker på >Delphi 2009

Uses

Graphics;
Avatar billede jisch Mester
15. juli 2015 - 20:09 #5
>Stone. 1000 tak. Flot arbejde. Det virker  i  Delphi 2009 / W8.1. Der er endda både mulighed for Form og Skærm. Med en lille udvidelse fungerer det også som PtrSc:

Var
  MyFormat: Word;
  AData: THandle;
  APalette: HPalette;
begin
.
.
.
    Image1.Picture.SaveToClipboardFormat(MyFormat, AData, APalette);
    ClipBoard.SetAsHandle(MyFormat, AData);

Jeg var vist lidt karrig med point, men skriv lige et svar - jeg ved ikke om jeg kan forøge point - det fortjener du.
Avatar billede stone Forsker
15. juli 2015 - 20:22 #6
bare giv mig hvad du har udlovet...har næsten 42.000 dem får jeg aldrig brugt i min levetid "S"
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester