Einzelnen Beitrag anzeigen

gasty

Registriert seit: 14. Nov 2007
Ort: Nidderau
80 Beiträge
 
Delphi 7 Enterprise
 
#1

Screenshot bei Tastendruck machen und speichern

  Alt 16. Dez 2009, 18:49
Hi,
also ich habe nun versucht, ein Programm zu schreiben, welches die Tasten überwacht, und wenn man Druck drückt, einen Screenshot macht, ihn mit Datum und Zeit deklariert und abspeichert.
In der Theorie klappt das auch einwandfrei, doch leider in der Praxis nicht...
Hier mal mein Code:
Delphi-Quellcode:
procedure ScreenToFile(aFileName: string);
var
  Bitmap: TBitmap;
  Canvas: TCanvas;
begin
  Canvas := TCanvas.Create;
  try
    Canvas.Handle := GetWindowDC(0);
    try
      Bitmap := TBitmap.Create;
      try
        Bitmap.Width := Screen.DesktopWidth;
        Bitmap.Height:= Screen.DesktopHeight;
        Bitmap.PixelFormat := pfDevice;

        BitBlt(Bitmap.Canvas.Handle, 0, 0, Pred(Screen.DesktopWidth), Pred(
            Screen.DesktopHeight), Canvas.Handle, Screen.DesktopLeft,
            Screen.DesktopTop, Bitmap.Canvas.CopyMode);
        Bitmap.SaveToFile(aFileName+'.bmp');
      finally
        Bitmap.Free;
      end;
    finally
      ReleaseDC(0, Canvas.Handle);
    end;
  finally
    Canvas.Free;
  end;
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
   if Key = #44 then
      ScreenToFile(DateToStr(now)+'_'+TimeToStr(now));
end;
So, nun erstens das Problem, dass das Programm den KeyPress nicht erkennt, zweitens spuckt mir das Programm einen Error (Falscher Parameter) aus, wenn ich die Prozedur in einem Button abrufe.
Bitte um Hilfe bzw Lösungsvorschläge

PS: Am besten wäre es dann noch, wenn ich das Programm in die Tray Leiste setzen könnte, aber das hab ich jetz noch nicht angefangen zu coden, würde mich trotzdem über einen Ansatz freuen.

Gruß,
gasty
  Mit Zitat antworten Zitat