let vooral niet op mijn mooie code, zeer quick & dirty inelkaar gezet.
normaal gebruik ik tags en ruim ik mooi op.
ik heb een deel copy/paste gebruikt en omdat het een heel klein projectje is alles zo gelaten, vandaar de soms wat vage code
ik heb er net ff met de hand een jpg.free bij gezet, die zat er niet in
geen probleem, want de hele application krijgt bijna direct daarna een terminate
ook multimonitor oplossing is van eenzame hoogte
Delphi:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
| unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, clipbrd, jpeg;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
procedure ScreenShot (Image : TBitmap);
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
multimonitor, noclip: boolean;
procedure TForm1.FormCreate(Sender: TObject);
var
bm: tbitmap;
jpg: TJpegImage;
filenaam: string;
i:integer;
begin
for I := 0 to ParamCount do
begin
if LowerCase(ParamStr(i)) = '-multi' then multimonitor := true else
if LowerCase(ParamStr(i)) = '-noclip' then noclip := true else
begin
if pos(lowercase('.jpg'), lowercase(paramstr(i))) > 0 then filenaam :=
LowerCase(ParamStr(i));
end;
end;
bm := Tbitmap.Create;
jpg := TJpegImage.Create;
try
ScreenShot(bm);
if filenaam <> '' then {if parameterfilename <> '' then save to file }
begin
jpg.Assign(bm);
if directoryexists(extractfilepath(filenaam)) = false then
createdir(extractfilepath(filenaam));
jpg.SaveToFile(filenaam);
end;
if noclip = false then ClipBoard.Assign(bm); {putontheclipboard}
finally
bm.Free;
jpg.free;
end;
application.Terminate;
end;
procedure tform1.ScreenShot (Image : TBitmap);
var
DC : HDC;
begin
DC := GetDC (GetDesktopWindow);
try
if multimonitor = false then
Image.Width := GetDeviceCaps (DC, HORZRES)
else image.Width := screen.DesktopWidth;
if multimonitor = false then
Image.Height := GetDeviceCaps (DC, VERTRES)
else image.Height := screen.DesktopHeight;
BitBlt(Image.Canvas.Handle, 0, 0, Image.Width,
Image.Height,DC, 0, 0, SRCCOPY);
finally
ReleaseDC (GetDesktopWindow, DC);
end;
end;
end. |
als laatste nog ff een linkje naar het
leesmij.txt bestand
[
Voor 11% gewijzigd door
Mr.Nobody op 23-12-2003 23:39
]