Forum: Multimedia
Delphi
by Progman,
18. Dez 2009
Wenn ich in meinem Testproject
procedure TForm2.Button1Click(Sender: TObject);
begin
Bitmap.Assign(ClipBoard);
Bitmap.SaveToFile('blubb.bmp');
ClipBoard.Clear;
end;
mache, wird nach Drücken von "Druck" und Klick auf den Button das Bild gespeichert und anschließend ist das ClipBoard leer. Ohne irgendwelche Fehler.
Forum: Multimedia
Delphi
by Progman,
18. Dez 2009
Das
if not Clipboard.HasFormat(CF_BITMAP) then
exit
muss vor das try.
Dann müsste er rausspringen, wenn kein Bild drin ist.
Und nach dem Bild abspeichern einfach ClipBoard.Clear machen. Dann ist es leer.
Forum: Multimedia
Delphi
by Progman,
18. Dez 2009
Du solltest Bitmap.Assign verwenden.
Ich hab mal ein Testprojekt angehangen, dass die Zwischenablage speichert. Ist aber keine Überprüfunmg drin. Soll nur zur Demo sein.
Compilieren, Exe starten, Druck betätigen und dann auf den Button klicken. Dann ist ein 'blubb.bmp' im Exe-Verzeichnis, das den Screenshot enthält.
Forum: Multimedia
Delphi
by Progman,
18. Dez 2009
Nunja, ein unsichtbares Programm-Fenster erhält keine Tastaturereignisse.
Da müsste man Tastatureingaben schon global abfangen (Hook). Aber das hier zu erläutern, würde den Rahmen sprengen. Denn das ist nicht so ohne weiteres mal eben zu lösen.
Eine Alternative wäre, die Drucktaste zu benutzen.
Diese macht ja einen Screenshot und kopiert ihn in die Zwischenablage. Dann vom Programm zyklisch...
Forum: Multimedia
Delphi
by Progman,
17. Dez 2009
if Key = 145 then.....
das reicht vollkommen, da muss nix umgewandelt werden.
Die Drucktaste ist anscheinend eine der Systemtasten, die mit dem standardmäßigen KeyDown keinen Wert liefern.
Die liefert nämlich von Haus aus einen Screenshot. Der befindet sich dann in der Zwischenablage.
Forum: Multimedia
Delphi
by Progman,
17. Dez 2009
Welchen Tasten-Code die Drucktaste hat, weiß ich jetzt nicht aus dem Kopf.
Schreib doch mal ins OnKeyDown zusätzlich: ShowMessage(IntToStr(Key)):
Dann siehst du, welchen numerischen Wert die Druck-Taste liefert. ( So kann man auch alle anderen Tasten rauskriegen :) )
Dann vergleich einfach mit den Zahlenwert statt der VK-Konstanten.
Forum: Multimedia
Delphi
by Progman,
17. Dez 2009
KeyPress klappt bei den Systemtasten nicht richtig.
Pack das mal in OnKeyDown, da ist dann Key auch vom Typ Word, und nicht Char. Das müsste dann klappen.
Forum: Multimedia
Delphi
by Progman,
17. Dez 2009
DateToStr und TimeToStr liefern (m.W.) sowas "11.12.2009" und "14:22". Da hast du Punkte und einen Doppelpunkt im Dateinamen. Das mag Windows nicht :)
FormatDateTime('yyyy-mm-dd_hh-nn-ss',Now) wäre eventuell günstiger?
(das Jahr als erstes, um die Dateien nach exaktem Datum sortiert anzeigen zu können)